我发现自己在反复寻找nil?,空白?空的?在Ruby on Rails中。这是我最接近的结果:

空白的吗?对象为false、空或空白字符串。例如,"","",nil,[],{}为空。 nil ?对象是NilClass的实例。 空的吗?对象是特定于类的,定义因类而异。如果字符串没有字符,则字符串为空;如果数组不包含项,则数组为空。

是否遗漏了什么,或者可以进行更紧密的比较?


当前回答

nil ?是一个标准的Ruby方法,可以在所有对象上调用,如果对象为nil则返回true:

b = nil
b.nil? # => true

空的吗?是一个标准的Ruby方法,可以在一些对象上调用,如字符串,数组和哈希,如果这些对象不包含元素则返回true:

a = []
a.empty? # => true

b = ["2","4"]
b.empty? # => false

空的吗?不能在nil对象上调用。

空白的吗?是一个Rails方法,可以在nil对象上调用,也可以在空对象上调用。

其他回答

其他人都很好地解释了两者的区别。

我想在Ruby On Rails中添加,最好使用obj.blank?还是obj.present ?而不是obj。nil?还是obj.empty ?。

obj.blank吗?处理所有类型的nil, ",[],{},如果值不可用则返回true,如果值在任何类型的对象上可用则返回false。

nil ?是一个标准的Ruby方法,可以在所有对象上调用,如果对象为nil则返回true:

b = nil
b.nil? # => true

空的吗?是一个标准的Ruby方法,可以在一些对象上调用,如字符串,数组和哈希,如果这些对象不包含元素则返回true:

a = []
a.empty? # => true

b = ["2","4"]
b.empty? # => false

空的吗?不能在nil对象上调用。

空白的吗?是一个Rails方法,可以在nil对象上调用,也可以在空对象上调用。

Rails 4

@corban-brook的“Array”的替代方案:空白?'用于检查数组是否只保存空值,可以视为空白?正确的:

[ nil, '' ].all? &:blank? == true

你还可以这样做:

[nil, '', "", " ",' '].reject(&:blank?).blank? == true

所有都是nil?是空白的? 什么都是空的?是空白的? 没有空的东西?是零? 没有什么是nil?是空的吗?

Tl, dr——只用空白?&礼物吗?除非你想区分""和""

延伸朱利安的表格:

Ref: empty? blank? nil? Stupid can't tell the difference