Hash の default_proc が便利
Hash を初期化した際にブロックを記述しておくと、存在しないキーを呼び出したときに実行される。
hash = Hash.new { |h, k| h[k] = [] }
または、 default_proc= で後から指定することも可能。
hash.default_proc = ->(h, k) { h[k] = [] }
例えば、上記のコードが無かった場合に下記のコードはエラーになる
hash = Hash.new hash[:a] << 'aiueo'
特定のキーに対して配列で順次格納したい場合とかに有効だと思う。