我有一个哈希表,对于哈希表的每个级别,我想存储它的键和值。问题是,值可以是另一个哈希数组。此外,该哈希表可以包含键值对,其中值再次是另一个哈希数组,以此类推。此外,我不知道每个哈希表的嵌套深度。例如:
{
:key1 => 'value1',
:key2 => 'value2',
:key3 => {
:key4 => 'value4',
:key5 => 'value5'
},
:key6 => {
:key7 => 'value7',
:key8 => {
:key9 => 'value9'
}
}
}
......等等。 我想做的是保存每个键值对及其父项的ID。 我想这可能需要递归完成,但由于我不熟悉递归函数,所以不确定该如何实现。我知道如何正常迭代数据:
myHash.each {|key, value|
...Do something with the key and value ...
}
所以我猜递归调用会是这样的:
def save_pair (myHash)
myHash.each {|key, value|
if(value.class != Hash) ? Pair.create(key, value) : save_pair(value)
}
end
以下是未经测试的代码,我仍不确定如何在其中包含父级 ID 的保存方式。
object.respond_to? :each
或者my_object.class.include? Enumerable
,这样就不需要进行太多针对哈希的修改了。 - Peter DeWeesestack = self.map{ |k,v| [ [k], v ] }
更改为stack = self.map{ |k,v| [ [k], v ] }.reverse
。 - Dex