我有红宝石阵列,它是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)