在枚举器上调用 max 方法
Calling max method on an enumerator
在此代码中:
people = [ p1, p2, p3 ]
people.map { |p| p.age }.max
- 这段代码不是创建一个数组,然后在其上调用
max
吗?
- 这不是冗余数组造成的内存浪费吗
由
map
方法创建?
- 我们不能只对任何枚举器调用
max
并计算
飞行中的最大值?
是的,map
创建一个临时数组。是的,您可以使用块形式
直接在可枚举对象上使用 max
the_eldest_one = people.max { |p1, p2| p1.age <=> p2.age }
# or
the_eldest_one = people.max_by(&:age)
Sergio 的回答很好,但作为替代方法:
是的,它创建了一个新数组。是的,这是一种浪费。避免同时创建中间数组和重新计算值的方法是手动执行。假设最大值至少为 0
(您可以更改):
people.inject(0){|max, e| _max = e.age; _max > max ? _max : max}
在此代码中:
people = [ p1, p2, p3 ]
people.map { |p| p.age }.max
- 这段代码不是创建一个数组,然后在其上调用
max
吗? - 这不是冗余数组造成的内存浪费吗
由
map
方法创建? - 我们不能只对任何枚举器调用
max
并计算 飞行中的最大值?
是的,map
创建一个临时数组。是的,您可以使用块形式
max
the_eldest_one = people.max { |p1, p2| p1.age <=> p2.age }
# or
the_eldest_one = people.max_by(&:age)
Sergio 的回答很好,但作为替代方法:
是的,它创建了一个新数组。是的,这是一种浪费。避免同时创建中间数组和重新计算值的方法是手动执行。假设最大值至少为 0
(您可以更改):
people.inject(0){|max, e| _max = e.age; _max > max ? _max : max}