Procオブジェクトは #call
を使って実行することが多いと思う。
fn = Proc.new { |v| puts v } fn.call("Hello, world!") # => "Hello, world!"
しかし、次のように []
を使っても実行できるのだ。
fn = Proc.new { |v| puts v } fn["Hello, world!"] # => "Hello, world!"
引数が複数でも実行できる。
fn = Proc.new { |v, v2| puts "#{v}, #{v2}" } fn.call("Hello", "world!") # => "Hello, world!" fn["Hello", "world!"] # => "Hello, world!"
ドキュメントにも普通に書いてあるよ(僕は今日知りました)。
instance method Proc#=== (Ruby 2.6.0)