检查数组中所有元素是否为零的方法是什么?
我想知道除了数组中的nil
值之外是否还有其他内容。
arr = [nil, nil, nil, nil] # => true arr = [nil, 45, nil, nil] # => false
可以有任何类型的任何值(不仅是45
)。
你也可以用#any? 数组的方法
[nil, 45].any? => true [nil, nil].any? => false
从文档:
如果没有给出块,Ruby会添加一个{| obj |的隐式块 obj}(即任何?如果至少有一个集合成员不是false或nil,则返回true。
注意:如果存在false
布尔值,则无效。
[nil, false].any? => false # It should return `true`
其他选择是:
arr = [nil, nil, 45] arr.count(nil) == arr.length => false (arr - [nil]).empty? => false
使用Enumerable#all?
方法:
p arr.all? { |x| x.nil? }
要么
p arr.all?(&:nil?)
正如@Stefan所说,
p arr.all?(NilClass) #works only for Ruby 2.5
你可以做arr.compact.empty?
, compact
为你摆脱了所有的nil
你可以在这里阅读ruby指南 ,找到关于Array
类的所有方法