我有 ruby 数组,nil但当我检查使用nil?并blank?返回时false
@a = [""]
@a.nil?
=> false
@a.empty?
=> false
如何检查返回 true 的 nil 条件?
[""]是一个具有单个元素的数组,其中包含一个空的 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,因为如果 Array 为空,那么根据定义,它的所有元素(无元素)都满足每个条件。
在红宝石中,您可以像这样检查
[""].all? {|i| i.nil? or i == ""}
如果你在铁轨上,你可以做
[""].all? &:blank?
p defined? "" #=> "expression"
p defined? nil #=> "nil"
""你认为的那个nil,实际上是一个expression。empty如下所示查看数组和数组的大小以non-empty获得更多证据:
p [].size #=> 0
p [""].size #=> 1
说你#nil?和#empty给false。这是预期的。