从一组数组中返回最大的数组

时间:2015-12-06 11:17:36

标签: arrays ruby enumerable

在Ruby中,编写一个接受一组数组作为参数并返回具有最多元素数组的方法的最优雅方法是什么?

def largest_array(*arrays)
end

例如,给定:

a1 = [*0..9]
a2 = [*0..99]
a3 = [*0..49]
a4 = [*0..19]

largest_array(a1, a2, a3, a4)应该返回a2

请注意,该方法必须返回对最大数组本身的引用,而不是大小。此外,在这种情况下,如果存在大小相同的数组,则返回哪个数组无关紧要。

1 个答案:

答案 0 :(得分:6)

使用Enumerable#max_by

def largest_array(*arrays)
  arrays.max_by &:size
end


a1 = [*0..9]
a2 = [*0..99]
a3 = [*0..49]
a4 = [*0..19]
largest_array(a1, a2, a3, a4) == a2  # => true