今更ながらブロック引数の受け取りにキーワード引数が使える事に気付いた。
よくよく考えるとブロック引数の受け取りはメソッドの引数受け取りと同じ処理してるんだから、メソッドの定義で使えるものは基本的に使えるはずで、至極当たり前の事といえばその通りなのだが……。
(自分は今日意識するまで気付いてなかった……)
だからこんな感じで書ける。
[23] pry(main)> [{hoge: "fuga", foo: "bar"}].each do |hoge:, foo:|
[23] pry(main)* puts hoge
[23] pry(main)* puts foo
[23] pry(main)* end
fuga
bar
もしくはこんな感じ。
[24] pry(main)> [{hoge: "fuga", foo: "bar"}].each do |hoge:, **|
[24] pry(main)* puts hoge
[24] pry(main)* end
fuga
言語的に何も問題無いはずだが、余り見ないので、こういうスタイルで書いていいものかは迷う所。
もうRuby書いてて長いけど、時々こういう発見があるのがRubyっぽいなあという感じがする。
ちなみに、キーワード引数の仕様はRubyのバージョンに依存するのでお手持ちのRubyをご確認ください。