某些方法,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)不用重新计算就可以访问?