Proc.newとproc、lambdaとのセマンティクスの違い
Proc.newとproc、lambdaでは、returnの扱いが違います。おー、これはサプライズです。まぁProc.newはまず使わないからあまり影響はないのですが。
def foo Proc.new { return 'Proc.new' }[] return 'foo' end def bar proc { return 'proc' }[] return 'bar' end def baz lambda { return 'lambda' }[] return 'baz' end p foo # => "Proc.new" … 呼び出したメソッドからかえっている。 p bar # => "bar" … クロージャからかえるだけ。 p baz # => "baz" … クロージャからかえるだけ。