我想知道除了数组中的nil
值之外是否还有其他内容。
arr = [nil, nil, nil, nil] # => true
arr = [nil, 45, nil, nil] # => false
可能有任何类型的值(不仅是45
)。
答案 0 :(得分:7)
使用Enumerable#all?
方法:
p arr.all? { |x| x.nil? }
或者
p arr.all?(&:nil?)
正如@Stefan建议的那样,
p arr.all?(NilClass) #works only for Ruby 2.5
答案 1 :(得分:6)
你可以arr.compact.empty?
,compact
为你排除所有nil
您可以在ruby guides阅读此处,了解Array
类
答案 2 :(得分:2)
您还可以使用#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