你能解释为什么空吗?没有?方法返回不同的结果?
ruby-1.9.2-p0 > [].empty?
=> true
ruby-1.9.2-p0 > {}.nil?
=> false
ruby-1.9.2-p0 > {}.empty?
=> true
ruby-1.9.2-p0 > [].empty?
=> true
ruby-1.9.2-p0 > [].nil?
=> false
答案 0 :(得分:3)
我猜你是来自python?由于各种设计原因,Python和其他语言可能会非常松散。
Ruby采用严格的方法。
零?仅用于测试零(无值)。
空?正在测试其中没有任何内容的容器(数组,哈希)。
搜索有关这些方法的ruby文档。例如,here对于数组是空的。
您可能也想this tutorial。
答案 1 :(得分:1)
因为空和零是不同的概念? :)
空? - >这里什么都没有
无? - >空
答案 2 :(得分:1)
您的问题在此完全被发现:http://www.ruby-forum.com/topic/160638
答案 3 :(得分:1)
empty?
通过适用于该对象的任何定义返回对象是否为“空”。并非所有对象都响应empty?
。例如,for Array, empty?
is defined as:
如果
true
不包含任何元素,则返回self
。
[].empty? #=> true
nil?
只有在调用nil
本身时才返回true。您可以在始终返回false
的{{3}}和true
中始终返回[1].empty? #=> false
[].empty? #=> true
Object.new.nil? #=> false
nil.nil? #=> true
的位置看到此内容。
{{1}}
答案 4 :(得分:0)
empty?
,顾名思义,测试一个对象为空,而不是nil
。该对象也不一定实现empty?
。另一方面,nil?
测试一些实例是nil
(再次,顾名思义) - 如果它是空的,则不是。
nil.nil? # true; yup, it's nil. Calling .empty? will result in an error.
anythingElse.nil? # false, it's not nil.
[1, 2].empty? # false; 2 elements
{"blah" => 2}.empty? # false, it has stuff
nil
是一个无对象,不是一个空数组。