[Ruby] 多重Hashの宣言の仕方
RubyではPHPのようにデフォルトで多重Hashを利用することが出来ません。
以下のようなエラーになります。
single_h = Hash.new single_h["first"]["second"] = "value" # => hash.rb:13:in `<main>': undefined method `[]=' for nil:NilClass (NoMethodError)
このnilエラーを回避するためには、Hash.newの引数で直接Hashの構造を書いてやればOKです。
multi_h = Hash.new { |hash,key| hash[key] = Hash.new {} } multi_h["first"]["second"] = "value" # => OK puts multi_h # => {"first"=>{"second"=>"value"}}