【发布时间】:2009-07-26 16:36:23
【问题描述】:
lambda 在本示例中用于 compose 和 hydrate 方法。 lambda 在这里做什么?
def compose *lambdas
if lambdas.empty?
lambda { nil }
elsif lambdas.size == 1
lambdas.first
else
lambda do |n|
lambdas.first.call(compose(*lambdas[1..-1]).call(n))
end
end
end
def hydrate(modulus, printable_form)
i = 0
lambda do |n|
(i = (i + 1) % modulus) == 0 && printable_form || n
end
end
print(((1..100).map
&compose(
hydrate(15, 'Watermelon'),
hydrate(5, 'Melon'),
hydrate(3, 'Water'))).join(' '))
我的第二个问题是 - compose 这个词前面的 & 符号有什么用?
【问题讨论】:
标签: ruby lambda metaprogramming