我发现自己在反复寻找nil?,空白?空的?在Ruby on Rails中。这是我最接近的结果:
空白的吗?对象为false、空或空白字符串。例如,"","",nil,[],{}为空。 nil ?对象是NilClass的实例。 空的吗?对象是特定于类的,定义因类而异。如果字符串没有字符,则字符串为空;如果数组不包含项,则数组为空。
是否遗漏了什么,或者可以进行更紧密的比较?
我发现自己在反复寻找nil?,空白?空的?在Ruby on Rails中。这是我最接近的结果:
空白的吗?对象为false、空或空白字符串。例如,"","",nil,[],{}为空。 nil ?对象是NilClass的实例。 空的吗?对象是特定于类的,定义因类而异。如果字符串没有字符,则字符串为空;如果数组不包含项,则数组为空。
是否遗漏了什么,或者可以进行更紧密的比较?
当前回答
其他人都很好地解释了两者的区别。
我想在Ruby On Rails中添加,最好使用obj.blank?还是obj.present ?而不是obj。nil?还是obj.empty ?。
obj.blank吗?处理所有类型的nil, ",[],{},如果值不可用则返回true,如果值在任何类型的对象上可用则返回false。
其他回答
别忘了吗?通常是空的?在Rails中,我通常检查在语句结束时是否存在if something或unless something,然后使用空白?在需要的地方,因为它似乎在任何地方都有效。
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的对象很有用。
只是关于any的一点注释?推荐:他说得对,它通常相当于!empty?。然而,任何?将返回true,返回一个只有空格的字符串(ala " ")。
当然,也可以看到上面1.9的评论。
所有都是nil?是空白的? 什么都是空的?是空白的? 没有空的东西?是零? 没有什么是nil?是空的吗?
Tl, dr——只用空白?&礼物吗?除非你想区分""和""
快速提示:!obj.blank?= = obj.present吗?
在某些表达中是否方便/更方便眼睛