Hash のデフォルト値に空の配列を使用したい

More than 1 year has passed since last update.


やりたいこと

Hash のデフォルト値に空の配列を使用したいです。


実現方法

次のようにすれば良いです。Hash.new([]) とすると、デフォルト値が共有されてしまうため、意図通りの挙動になりません。

hash = Hash.new{|h, k| h[k] = [] }


注意点

次のようなコードを書いている場合、意図通りに動作しません。 Hash#has_key? を替わりに使用する必要があります。

if hash[:some_key]

# 何らかの処理
end


環境


  • ruby 2.4.2p198