检查元素都具有相同的值

时间:2019-11-26 08:32:59

标签: ruby-on-rails ruby

我正在使用Ruby 1.8的旧版Rails项目中工作,我有一个浮点数数组。它可以包含my_array = [12.20, 10.0, 3.5]之类的值。如何检查my_array是否包含所有零值?例如[0,0,0][0.0,0.0]。我知道我可以循环遍历并逐个检查元素,但是我只是想知道还有没有更优雅的方法?

2 个答案:

答案 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)