我有ruby数组,它是nil
但是当我使用nil?
和blank?
检查时,它会返回false
@a = [""]
@a.nil?
=> false
@a.empty?
=> false
如何检查返回true的nil条件?
答案 0 :(得分:22)
[""]
是一个包含空String对象的单个元素的数组。 [].empty?
将返回true
。 @a.nil?
正在返回false
,因为@a
是一个Array对象,而不是nil
。
示例:
"".nil? # => false
[].nil? # => false
[""].empty? # => false
[].empty? # => true
[""].all? {|x| x.nil?} # => false
[].all? {|x| x.nil?} # => true
[].all? {|x| x.is_a? Float} # => true
# An even more Rubyish solution
[].all? &:nil? # => true
最后一行表明[].all?
将总是返回true,因为如果一个数组是空的,那么根据定义,它的所有元素(没有元素)都满足每个条件。
答案 1 :(得分:13)
在红宝石中,你可以这样检查
[""].all? {|i| i.nil? or i == ""}
如果你在轨道上,你可以做到
[""].all? &:blank?
答案 2 :(得分:1)
p defined? "" #=> "expression"
p defined? nil #=> "nil"
您正在考虑的""
nil
,实际上是expression
。请查看empty
数组和non-empty
数组的大小,如下所示:
p [].size #=> 0
p [""].size #=> 1
说你的#nil?
和#empty
给了false
。这是预期的。