给定一个 lambda 数组和一个值数组(均在运行时创建),
values.map{ |value| lambdas[0].(value) }
将(显然)将第一个 lambda 表达式应用于每个值的结果作为数组返回。但我需要做的是应用所有的 lambda,即相当于
values.
map{ |value| lambdas[0].(value) }.
map{ |value| lambdas[1].(value) }.
...
map{ |value| lambdas[-1].(value) }
我当然可以写一个方法来做到这一点,例如
def map_all(lambdas, values)
if lambdas.length == 0
values
else
map_all(lambdas.drop(1), values.map{ |value| lambdas.first.(value) })
end
end
但是有没有更优雅或惯用的方法来做到这一点?