深くネストされたハッシュの DFS トラバース
概要
Rubyでハッシュを再帰的に走査するという質問を見ました
しかし、私はまだこれを達成できません。誰か助けてください(説明も)。
入力ハッシュ:
{"." => {"foo" => {"hello" => {}, "world" => {}}, "bar" => {}}}
何も検索せずに横断するだけで十分です
解決策
すべての値がハッシュの場合、これは機能します。
hash = {"." => {"foo" => {"hello" => {}, "world" => {}}, "bar" => {}}}
def traverse(hash, depth = 0)
hash.each do |key, value|
puts "#{depth} #{key}"
traverse(value, depth + 1)
end
end
traverse(hash)
出力:
0 .
1 foo
2 hello
2 world
1 bar