Ruby の Proc オブジェクトの評価方法まとめ
Ruby の Proc オブジェクトを評価する場合、いくつかのメソッドが用意されているのでまとめてみました。
proc = Proc.new { |it| 42 + it } proc.call 1 # => 43 proc[2] # => 44 proc === 3 # => 45 proc.yield 4 # => 46
#call, #[], #===, #yield の4つのメソッドで評価することができます。
この4つはすべて同等の処理になります。
また、メソッド呼び出し以外にも .() で #call を呼び出すことができるシンタックスシュガーがあります。
proc = Proc.new { |it| 42 + it } proc.(5) # proc.call(5) と同等 # => 47
また、このシンタックスシュガーは Proc 以外でも #call メソッドが定義されているクラスであれば使用する事ができます。
class X def call 42 end end x = X.new p x.call # => 42 p x.() # => 42