6

ここにネストされたハッシュがあるとします。

a = {:"0" => {:CA => {:count => 10}}}

そのハッシュに新しいハッシュペアを追加したい場合は、

a = {:"0" => {:NY => {:count => 11}}} 

そしてそれを

a = {:"0" => {:CA => {:count =>10}, :NY => {:count => 11}}}

私は何をすべきか?

私はもう試した

a[:0][:NY][:count] = 11

ただし、「undefined method `[] ='for nil:NilClass(NoMethodError)」というエラーが発生します。

4

2 に答える 2

9

まだ存在しないハッシュのキーを設定しようとしているため、nil:NilClassエラーが発生します。キー:NYの値であるハッシュを作成する必要があります。

a[:"0"].merge!({:NY => {:count => 11}})

また

a[:"0"][:NY] = {:count => 11}
于 2012-08-10T01:30:02.797 に答える
7

私の推測では、あなたはこのようなことをしたいと思っています。

a = {:"0" => {:CA => {:count => 10}}}
b = {:"0" => {:NY => {:count => 11}}} 
a[:"0"][:NY] = b[:"0"][:NY] #=> {:"0"=>{:CA=>{:count=>10}, :NY=>{:count=>11}}}

マージを利用することもできます

a = {:"0" => {:CA => {:count => 10}}}
b = {:"0" => {:NY => {:count => 11}}} 
a[:"0"] = a[:"0"].merge(b[:"0"]) #=> {:"0"=>{:CA=>{:count=>10}, :NY=>{:count=>11}}}
于 2012-08-10T00:46:05.120 に答える