Ruby递归迭代多层嵌套的hash以及数组
Ruby有这样一个hash:
{
:key1 => 'value1',
:key2 => 'value2',
:key3 => {
:key4 => [{:key4_1 => 'value4_1', :key4_2 => 'value4_2'}],
:key5 => 'value5'
},
:key6 => {
:key7 => [1,2,3],
:key8 => {
:key9 => 'value9'
}
}
}
在这个数据结构里,既存在hash结构,也存在数组结构。
递归迭代方法:
def iterate(h)
h.each do |k,v|
value = v || k
if value.is_a?(Hash) || value.is_a?(Array)
iterate(value)
else
puts v ? "key: #{k} value: #{v}" : "array value #{k}"
end
end