Я хочу преобразовать вложенные хэши в рекурсивные многомерные массивы.
Это мой текущий код:
def deep_to_a(hash)
return hash.to_a.each {|k, v|
if k.is_a?(Hash) then
hash[k.to_a] = hash.delete(k)
deep_to_a(k)
elsif v.is_a?(Hash) then
hash[k] = hash[k].to_a
if hash[k].any?{|k, v| k.is_a?(Hash) || v.is_a?(Hash)}
deep_to_a(v)
end
end
}
end
Я хочу получить:
h = {11=>{12=>13, 14=>15}, 16=>17}
p deep_to_a(h) # => [[11, [[12, 13], [14, 15]]], [16, 17]]
Но я получаю
[[11, {12=>13, 14=>15}], [16, 17]]
Как я могу заставить это работать?