ruby Enumerable.Inject方法是一个闭包还是只是一个块?

时间:2011-05-08 23:01:41

标签: ruby-on-rails ruby closures dynamic-programming

我一直试图了解你是否需要在Ruby中的某个闭包之前创建一个proc或lambda。

作为一个典型的例子,我们可以看一下注入方法。它使用的是yield关键字,但它是一个闭包还是一个块?

def inject(init)
  result = init
  each do |item|
    result = yield(result, item)
  end
  result
end

1 个答案:

答案 0 :(得分:2)

一段代码是一个闭包,如果它捕获一个块所做的封闭范围,那么块(以及lambdas和procs)就是闭包。

使用def定义的方法不要关闭任何内容,因此inject不是闭包。