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

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

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


当前回答

快速提示:!obj.blank?= = obj.present吗?

在某些表达中是否方便/更方便眼睛

其他回答

存在吗?方法可用于检查数据是否存在于数据库中。它返回布尔值true或false。

nil ?可用于任何对象。它确定对象是否有任何值,包括“空白”值。

例如:

example = nil
example.nil?  # true

"".nil?  # false

基本上是零?只有当对象实际上等于'nil'时才会返回true。

空的吗?仅在被视为集合的对象上调用。这包括字符串(字符的集合),散列(键/值对的集合)和数组(任意对象的集合)。空的吗?如果集合中没有项,则返回true。

例如:

"".empty? # true
"hi".empty?   # false
{}.empty?  # true
{"" => ""}.empty?   # false
[].empty?   # true
[nil].empty?  # false

nil.empty?  # NoMethodError: undefined method `empty?' for nil:NilClass

注意到空了吗?不能在nil对象上调用,因为nil对象不是一个集合,它会引发异常。

还要注意,即使集合中的项是空的,也不意味着集合是空的。

空白的吗?基本上是nil的组合?和空的吗?它对于检查假定为集合但也可能为nil的对象很有用。

我用所有的案例做了一个有用的表格:

空白的吗?,现在呢?是由Rails提供的。

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