某些方法,Enumerable
例如max_by
,min_by
,或find
为迭代的项目评估一些相关值,并返回原始项目之一。我经常想要的不是原始值,而是评估的形式。在这个例子中:
max = some_enumerable_object.max_by{|e| some_function(e)}
some_function(max)
max_by
选择一个项目max
,但我想要的是价值some_function(max)
而不是它max
本身。这样做some_function(max)
似乎浪费了计算,因为它已经在迭代中进行了评估。有没有办法some_function(max)
不用重新计算就可以访问?