【发布时间】:2015-02-12 19:03:23
【问题描述】:
我在使用 Ruby 代码时遇到了一点“问题”。 我想检查一个数组的所有元素是否相等。
例如,假设我有一个只有 5s 的数组:
arr = [5, 5, 5, 5, 5]
我知道我可以做类似的事情
arr[0] == arr[1] == arr[2] == arr[3] # == arr[4] == ...
但这对于大型数组是不可能的,而且在我看来也不是很像 Ruby。 我们可以通过这样做来改进它:
def all_equal?(arr)
for i in 0..(arr.size-2)
if arr[i] != arr[i+1] then
return false
end
end
true
end
但我也认为这很丑陋。那么是否有任何内置/更好/更短(更像 Ruby 风格)的方式来做到这一点?
TL;DR 检查数组是否仅包含一个不同元素(例如 [5, 5, 5])的最短/最 Ruby 风格的方法是什么?
谢谢。
【问题讨论】:
-
如果
arr的元素都与<=>相当,你可以这样做:arr.min==arr.max,但这显然是uniq的工作。 -
arr[0] == arr[1] == arr[2]真的吗?您使用的是哪个 Ruby 版本?