在此代码中:
people = [ p1, p2, p3 ]
people.map { |p| p.age }.max
max
吗?map
方法创建?max
飞行中的最大值?答案 0 :(得分:6)
是的,map
创建一个临时数组。是的,您可以使用其块形式
max
the_eldest_one = people.max { |p1, p2| p1.age <=> p2.age }
# or
the_eldest_one = people.max_by(&:age)
答案 1 :(得分:1)
塞尔吉奥的答案很棒,但作为另一种方式:
是的,它会创建一个新数组。是的,这是浪费。避免创建中间数组以及重新计算值的方法是手动执行。假设max至少为0
(您可以更改):
people.inject(0){|max, e| _max = e.age; _max > max ? _max : max}