我正在将Ruby on Rails与ClosureTree宝石一起使用。我有一个嵌套的哈希:
{
:a00=>{
:a10=>{
:a20=>{},
:a21=>{}
},
:a11=>{
:a22=>{
:a30=>{},
:a31=>{}
}
}
}
}
我想找到任何给定键及其所有“超级键”的值。例如,对于:a30
,我想找到其值{}
以及嵌套在其中的哈希键:[:a00, :a11, :a22]
。
我找到了“ Finding Deeply Nested Hash Keys”,它描述了一种满足我的条件的第一部分的方法,即找到密钥的值:]>
def deep_find(obj, key) return obj[key] if obj.respond_to?(:key?) && obj.key?(key) if obj.is_a? Enumerable found = nil obj.find { |*a| found = deep_find(a.last, key) } found end end
但是,我还没有找到找到“超级键”的方法。
我正在将Ruby on Rails与ClosureTree宝石一起使用。我有一个嵌套的哈希:{:a00 => {:a10 => {:a20 => {},:a21 => {}},:a11 => {:a22 => {:a30 => {} .. 。
我会选择这样的东西:
代码