ruby数组检查nil数组

urj*_*ils 8 ruby arrays null

我有红宝石阵列,它是nil,但是当我检查使用nil?blank?返回false

@a = [""]

@a.nil?
=> false

@a.empty?
=> false
Run Code Online (Sandbox Code Playgroud)

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

acs*_*ith 23

[""]是一个包含空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
Run Code Online (Sandbox Code Playgroud)

最后一行表明[].all?始终返回true,因为如果Array为空,则根据定义,其所有元素(无元素)都满足每个条件.


小智 13

在红宝石中,你可以这样检查

[""].all? {|i| i.nil? or i == ""}
Run Code Online (Sandbox Code Playgroud)

如果你在轨道上,你可以做到

[""].all? &:blank?
Run Code Online (Sandbox Code Playgroud)