proc return vs lambda return

时间:2017-04-05 17:22:09

标签: ruby lambda proc

为什么Proc in ruby​​会在调用Proc的方法中执行剩余代码之前返回?

def hello
  a = Proc.new{ return }
  a.call
  puts "Hello"
end


def proc
  hello
  puts "Proc"
end

此处return将跳过puts "Hello"并仅打印puts "Proc"

lambda也会打印puts "Hello"

原因是什么?

1 个答案:

答案 0 :(得分:2)

您应该在此回答https://stackoverflow.com/a/723/4576274中看到评论。

说明

  

lambda是一种匿名方法。因为它是一个方法,它返回一个   值,以及调用它的方法可以随意使用它,   包括忽略它并返回不同的值。

     

Proc就像   粘贴在代码段中。它不像一种方法。所以当一个   返回发生在Proc中,这只是代码的一部分   叫它的方法