我有一个像这样的“哈希树”:
dat = {
'building' => {'street' => 'High Street 10', 'people' =>[Person, Person]}
}
人可以是任何东西。
所以,在我的代码中,我直接访问'building',就像这样:dat['building']
,现在是否有办法以某种方式在树上,再次访问{'building' => {...}}
?< / p>
我目前有一个让我可以访问其中任何一个的功能:
def info with_root = false
with_root ? dat : dat['building']
end #info
看起来并不坏(我认为),但我希望有更好的方法。
谢谢!
答案 0 :(得分:2)
简答:不。
原因是这个。
假设你有:
addr = {'street' => 'High Street 10', 'people' =>[Person, Person]}
dat1 = {'building' => addr}
dat2 = {'zip'=>55117, 'electricBillID'=>11223344, 'address' => addr
当你“向上”时会发生什么?你得到dat1或dat2?
如果你真的需要能够这样做 - 而且你做的并不明显 - 你需要使用更复杂的数据结构,其中包含指向包含对象的链接 - 类似于树(https) ://rubygems.org/gems/rubytree)或简单的图形结构。
并且,正如已经提到的,如果你只是挂在根对象上,你总是可以爬回哈希。