我一直试图了解你是否需要在Ruby中的某个闭包之前创建一个proc或lambda。
作为一个典型的例子,我们可以看一下注入方法。它使用的是yield关键字,但它是一个闭包还是一个块?
def inject(init)
result = init
each do |item|
result = yield(result, item)
end
result
end
答案 0 :(得分:2)
一段代码是一个闭包,如果它捕获一个块所做的封闭范围,那么块(以及lambdas和procs)就是闭包。
使用def
定义的方法不要关闭任何内容,因此inject
不是闭包。