ruby数组检查nil数组

时间:2013-04-16 12:52:51

标签: ruby arrays null

我有ruby数组,它是nil但是当我使用nil?blank?检查时,它会返回false

@a = [""]

@a.nil?
=> false

@a.empty?
=> false

如何检查返回true的nil条件?

3 个答案:

答案 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。这是预期的。