[[🗃️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)