>假设我们这里有一个嵌套的哈希。
a = {:"0" => {:CA => {:count => 10}}}
如果我们想向该哈希添加新的哈希对,请说
a = {:"0" => {:NY => {:count => 11}}}
让它成为
a = {:"0" => {:CA => {:count =>10}, :NY => {:count => 11}}}
我该怎么办?
我试过了
a[:0][:NY][:count] = 11
但得到错误"nil:NilClass (NoMethodError)的未定义方法'[]='
您收到 nil:NilClass 错误,因为您正在尝试设置尚不存在的哈希键。您需要创建作为键 :NY 值的哈希。
a[:"0"].merge!({:NY => {:count => 11}})
或
a[:"0"][:NY] = {:count => 11}
我的猜测是你想做这样的事情。
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}}}