やったこと
Ruby の関数で引数にメソッドを渡す方法を調べてみます。
確認環境
$ ruby --version
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin17]
調査
test.rb
def xxx(&yyy)
p yyy
yyy.call
end
def abc1
p 'abc1'
end
## ブロック付きメソッド呼び出し
## { ... }
p '{ ... }'
xxx {
abc1
}
## do ... end
p 'do ... end'
xxx do
abc1
end
出力結果
$ ruby test.rb
"{ ... }"
#<Proc:0x00007faa8a036588@ruby-block.rb:13>
"abc1"
"do ... end"
#<Proc:0x00007faa8a036358@ruby-block.rb:19>
"abc1"
最後の引数の直前に & がついている場合、その引数で指定した手続き オブジェクト(Proc)やメソッドオブジェクト(Method)がブロック としてメソッドに渡されます。