Time to Read
30秒
Rubyのブロック引数については、例えば以下のような書き方が許されて大変便利です。
1 2 3 4 5 6 | [[[1, 2], 3], [[5, 6], 11]].each do |(a, b), c| puts "#{a + b} = #{c}" end # 3 = 3 # 11 = 11 |
このカッコ、どうも to_ary が定義されていれば展開されるようです。なので、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | class MatchData alias to_ary to_a end m = "hoge".match /(o).*(e)/ #=> #<MatchData "oge" 1:"o" 2:"e"> m.tap do |(whole, first, second)| puts " whole match: #{whole}", " first match: #{first}", "second match: #{second}" end # whole match: oge # first match: o # second match: e |
こういう書き方も出来ます(この場合、実はカッコなしでも同じ挙動ですね)。
なお、多重代入の右辺でも to_ary は使われます。詳細はきっとソースなどにありますが、僕は読んでいません ;(
だからなんだというでもないですが、ちょっとしたtipsまでに。




