[[🗃️Ruby]]の[[🗃️Proc]]と[[🗃️lambda(Ruby)]]は何が違うのだろうか。 [[🗃️lambda(Ruby)]]のほうがメソッドに近い動きになるとのこと。 ## 渡される引数の数が異なるとき ### [[🗃️Proc]] .new ```ruby proc = Proc.new{ |a,b,c| p "#{a},#{b},#{c}" } proc.call(2, 4) #実行結果 => 2,4,nil ``` ### [[🗃️lambda(Ruby)]] ```ruby lambda1 = lambda{ |a,b,c| p "#{a},#{b},#{c}" } lambda1.call(2, 4) #実行結果 => wrong number of arguments (2 for 3) (ArgumentError) ``` ## return breakをしたときの挙動 ### [[🗃️Proc]].new ```ruby def method_proc proc = Proc.new { return p "proc"} proc.call p "method_proc" end method_proc #実行結果 =>"proc" ``` ### [[🗃️lambda(Ruby)]] ```ruby def method_lambda lambda1 = lambda{ return p "lambda"} lambda1.call p "method_lambda" end method_lambda #実行結果 =>"lambda" "method_lambda" ``` [Rubyの ブロック、Proc.new、lambdaの違い - Qiita](https://qiita.com/ryo-ma/items/24c46592b45775e8644d)