ハッシュについて
Hash.new { |v, k| v[k] = [] } の具体的な動作
このコードでは、存在しないキー k にアクセスした場合に、次の手順が実行されます:
v[k] = [] が実行される: ハッシュ v にキー k を追加し、その値を空の配列[] に設定します。
空の配列 [] を返す: 結果として空の配列が返されます。
code:rb
hash = Hash.new { |v, k| vk = [] }
# 存在しないキーにアクセス
hash:foo << "bar" # キー :foo が自動的に作成され、値が "bar" になる
puts hash # => {:foo=>"bar"}
# 別のキーも同様に動作
hash:baz << "qux"
puts hash # => {:foo=>"bar", :baz=>"qux"}