Techioz Blog

深くネストされたハッシュの 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