Mare

何时使用lambda,何时使用Proc.new?

╄→尐↘猪︶ㄣ 提交于 2020-03-08 19:19:24
在Ruby 1.8中,proc / lambda与 Proc.new 之间存在细微差别。 这些差异是什么? 你能给出如何决定选择哪一个的指导方针吗? 在Ruby 1.9中,proc和lambda是不同的。 这是怎么回事? #1楼 我没有注意到对queston中的第三个方法的任何评论,“proc”已被弃用,但在1.8和1.9中处理方式不同。 这是一个相当冗长的例子,可以很容易地看到三个类似调用之间的差异: def meth1 puts "method start" pr = lambda { return } pr.call puts "method end" end def meth2 puts "method start" pr = Proc.new { return } pr.call puts "method end" end def meth3 puts "method start" pr = proc { return } pr.call puts "method end" end puts "Using lambda" meth1 puts "--------" puts "using Proc.new" meth2 puts "--------" puts "using proc" meth3 #2楼 进一步澄清: 乔伊说, Proc.new 的回归行为令人惊讶。