我正在使用Ruby 1.8的旧版Rails项目中工作,我有一个浮点数数组。它可以包含my_array = [12.20, 10.0, 3.5]
之类的值。如何检查my_array是否包含所有零值?例如[0,0,0]
或[0.0,0.0]
。我知道我可以循环遍历并逐个检查元素,但是我只是想知道还有没有更优雅的方法?
答案 0 :(得分:3)
所有
my_array
个元素都为零吗?
my_array.all?(&:zero?)
请注意,如果没有循环(无论是隐式的还是显式的),都无法进行检查。像上面这样的隐式循环看起来更漂亮,但它的功能与“循环并逐个检查元素”完全相同。
答案 1 :(得分:0)
如果您想惯用英语,那正是Amadan所说的。使用Enum#all?
如果您希望一些想法可以解决:
# uniq
array.uniq == [0]
array.uniq == [0.0]
# min and uniq
my_array.uniq.count == 1 && my_array.min.zero?
my_array.uniq.count == 1 && my_array.uniq.first.zero?
# min, max, zero
min = my_array.min
(min == my_array.max) && min.zero?
# construct ==
my_array == ([0] * my_array.count)
my_array == ([0.0] * my_array.count)