我很怀疑,有没有办法在不放入v
的情况下获得[:a][:b][:v]
的值?
{a: {b: {v: 'x'}}}
答案 0 :(得分:2)
如果已经有钥匙,请说
keys = [:a, :b, :v]
然后,您可以使用dig()
将值获取为:
hash = {a: {b: {v: 'x'}}}
hash.dig(*keys) #=> "x"
答案 1 :(得分:2)
如果您不知道键,但是您知道每个嵌套的哈希只有一个键:
def dig_values(h)
if h.is_a? Hash
dig_values(h[h.keys.first])
else
return h
end
end
dig_values(h) #=> "x"
这是一个递归方法(如您在其自身中看到的那样),它使用以下Ruby方法:Hash#keys,Object#is_a?和Enumerable#first。