检查数组中所有元素是否为零的方法是什么?

我想知道除了数组中的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类的所有方法