toshieeeee
3/2/2018 - 3:06 PM

Proc_Class.md

Proc.newとLamdaの違い

Proc.newは引数のチェックがゆるい

proc = Proc.new do |a, b|
    a.to_i + b.to_i
end
proc.call(1, 2 ,100) 
=> 3

Proc.newから、procインスタンスを作成した場合、引数が3つでも呼び出しが可能

Lamdaは引数のチェックが厳密

lamda = ->(a, b){ a.to_i + b.to_i }
lamda.call(1,2,3)
=> => ArgumentError: wrong number of arguments (given 3, expected 2) 

lamdaから、procインスタンスを作成した場合、 rubyのメソッドと同じように、引数に過不足があるとエラーが発生する。