技術ブログ

(技術系中心)基本自分用備忘録なので、あくまで参考程度でお願いします。

Procオブジェクトを作る方法

Procオブジェクトを作る方法

Procオブジェクトを作る方法は4つ

1. Proc.new{ a, b | a + b }

2. proc{ a, b | a + b }

3. -> (a, b) { a + b }

4. lamda | a, b| a + b

Proc.newとLamdaメソッドの違い

ProcもLamdaもProcクラスのオブジェクトを作成できますが、若干の違いがあります。

1. 引数の違い
-> ラムダは引数の違いのチェックが厳しい。引数の数に相違があると、ArgumentErrorが発生します。
2. returnやbreakの挙動が違う

参考記事:

returnやbreakを使ったときのProc.newとラムダの挙動の違い - Qiita

Procオブジェクトの実行方法

add_proc=Proc.new{|a,b|a+b}

#callメソッドを使う
add_proc.call(10,20)#=>30

#yieldメソッドを使う
add_proc.yield(10,20)#=>30

#.()を使う
add_proc.(10,20)#=>30

#[]を使うadd_proc[10,20]#=>30

参考: プロを目指す人のためのRuby入門