アスタリスクとto_a
さっき見たスクリプトに衝撃を受けた。
class Hash def safe_invert invert.inject( Hash.new{ |h,k| h[k] = [] } ) do |hash, (keys, val)| [*keys].each{ |key| hash[key] << val } hash end end end1つのキーに複数の値が対応して且つそれぞれの値が重複しているハッシュのキーと値を入れ替えたい時のメソッド(Ruby) - Qiita のコメント欄
[*keys]のアスタリスクは何なの???
おそらく複数要素あるkeysを開いて配列にしてるのだと思うんだけど…調査…その前に、コメント欄の他の部分を。
元のhashで値が配列でなくても
え?
必ず開けるの?
ぐぐる
まとめてあって詳細だったのがこれ。
Intro to Splat (*) operator in Ruby. | Blog by Ram - Learning to Code \(^o^)/
日本語だと、エッセンスだけだが
どうやらto_aメソッドに対応するようなのだが、違いもある。
もう少し調べてみる。