0
我一直在试图理解,如果你需要在Ruby中有一个闭包之前创建一个proc或lambda。难道Enumerable.Inject方法是闭包还是只是一个块?
作为一个典型的例子,我们可以看看注入方法。它使用yield关键字,但它是一个闭包还是只是一个块?
def inject(init)
result = init
each do |item|
result = yield(result, item)
end
result
end
我听说lamdda不一定是闭包。我会看看我能否找到对此的参考。所以注射不是封闭的,但它接受一个? – 2011-05-08 23:06:28
@John:“我听说拉姆达不一定是封闭。”无论谁告诉你这可能意味着block,lambda或proc不是闭包,如果它实际上并未使用封闭范围中的任何变量。然而,应该指出的是,即使块没有使用封闭范围中的任何变量,它仍然有对它们的引用,所以做出这样的区分并不一定有意义。 “所以注射不是封闭,而是接受一个。”对,就是这样。 – sepp2k 2011-05-08 23:13:52