我有 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
。这是预期的。