読者です 読者をやめる 読者になる 読者になる

Ruby の Proc オブジェクトの評価方法まとめ

Ruby

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