当我访问嵌套哈希时,会发生一些奇怪的事情。 下面是我的嵌套哈希。
{
"http://example.com"=>{
"a-big_word"=>{
"Another word"=>[]
}
},
"www.example.com"=>{
"a-big_word"=>{
"Another word"=>[]
}
}
}
如果我尝试使用以下内容添加内容
hash['www.example.com']['a-big_word']['Another word'] << {"key"=>"value"}
发生这种情况
{
"http://example.com"=>{
"a-big_word"=>{
"Another word"=>[{"key"=>"value"}]
}
},
"www.example.com"=>{
"a-big_word"=>{
"Another word"=>[{"key"=>"value"}]
}
}
}
答案 0 :(得分:3)
使用字符串而不是符号作为键。我拿了你的哈希并将密钥更改为字符串。现在它看起来像这样:
{"http://example.com"=>
{"sublink"=>
{"A word"=>[], :"Another word"=>[]},
"sublinktwo"=>
{"Hello"=>[], "World"=>[]}},
"www.example.com"=>
{"sublink"=>
{"hi"=>[], "goodbye"=>[]},
"sublinkthree"=>
{"word"=>[], "bye"=>[]}
}
}
如果您没有看到差异,我使用=>
代替:
的密钥。这样,Ruby就不会将密钥转换为符号,它会保持原样。
如何访问这些值?查看以下irb
会话。
> hash["www.example.com"]
=> {"sublink"=>{"hi"=>[], "goodbye"=>[]}, "sublinkthree"=>{"word"=>[], "bye"=>[]}}
> hash["www.example.com"]["sublink"]
=> {"hi"=>[], "goodbye"=>[]}
> hash["www.example.com"]["sublink"]["hi"]
=> []
更改值:
> hash["www.example.com"]["sublink"]["hi"] << {"key"=>"value"}
=> [{"key"=>"value"}]