2015-12-06 33 views
2

在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

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

回答

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 
+0

完美!谢谢。 –