考虑一个数组只有一个值 nil
array = [nil]
有没有更好的方法来检查数组是否为 nil
,例如 array.nil?
?
这个有效:
array == [nil]
但是如果数组中有多个nil
值呢?
array = [nil, nil, nil]
要求如下:
array = [1, 2] if array.nil?
array.nil?
还应在 array = [nil, nil, nil]
最佳答案
您可以使用 Array#any?
检查数组是否包含至少一个不是 false
或 nil
的值:
array = [1,2] unless array.any?
如果 array
允许包含 false
而您只对 nil
感兴趣,那么 Array#any?
需要一个 block :
array = [1,2] unless array.any?{|i| !i.nil?}
更新
正如@mu-is-too-short 所暗示的,更好的版本是:
array = [1,2] if array.all?(&:nil?)
它完全满足您的需求:Enumerable#all?如果 block 为数组的所有元素返回真值,则返回 true
。
关于arrays - array.nil?当数组只有多个 `nil` 值时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48801453/