arrays - array.nil?当数组只有多个 `nil` 值时

标签 arrays ruby

考虑一个数组只有一个值 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]

时给出“true”

最佳答案

您可以使用 Array#any?检查数组是否包含至少一个不是 falsenil 的值:

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/

相关文章:

c - 如果我声明一个 10 元素数组并尝试访问其中更大的位置,到底会发生什么?

php - 在 php 和 mysql 中以数组格式获取数据

c - 返回 C 中的数组 : random errors, 垃圾值

ruby - 使用 Sinatra 和 rspec stub Controller 方法

ruby - 使用 =~ (正则表达式)尽可能向右匹配

ruby - 停留在 EdgeCase Ruby Koans 上的 about_methods.rb

c - 将文本文件中的单词读取到二维数组中的问题

Ruby 从文件中读取变量

ruby - 使用 aws-sdk ruby​​ gem 了解它自己的实例 ID

javascript - 数组索引选择类似于 numpy 但在 javascript 中