0
ハッシュとネストされた配列を持つ配列を単純なコード再帰的なマップにしました。マップのようにメソッドの戻り値の各値を新しい値に変更したい。 しかし、何も返さない配列が返ってきたのですが、なぜか分かりません。Rubyでネストされた配列をマップしますが、戻り値はすべてnilです
私が思う
class DataTest
def m_arr
[
{:path => 'index'},
{:path => 'about'},
{:path =>'galleries'},
{:path =>'views'},
{:path =>'contact',
:child => [
{:path => 'contact/find_us'}
]}
]
end
def menu_struct_arr(m_arr)
m_arr.map do |menu|
menu = menulize(menu)
if menu.child
menu_struct_arr(menu.child)
end
end
end
Menu = Struct.new(:path, :child)
def menulize(item)
Menu.new(item[:path], item[:child])
end
end
が最後のコマンドである[ゼロ、ゼロ、ゼロ、ゼロ、[]はnil]:(menu.child場合)、nilを取得し、各項目ときに戻りますマッピング。もし私が間違っていると私を修正してください。
ありがとうございます、ありがとう、それは構造体配列の戻り値を取得しますが、どのように私は子供の中でハッシュを反復することができますか?または、私はこのデータ構造を使用すべきではありません、または私はメニューツリーをループする別の方法を試す必要がありますか? –
実際、私はなぜあなたのアプローチで何を試したのか理解できません。しかし、私はエラーについてあなたにいくつかの説明をしました。ですから、 '' Hash''をルビで繰り返し処理したいのであれば '' Array''と同じくらい簡単です。 [Hash#each](http://ruby-doc.org/core-2.1.5/Hash.html#method-i-each)のようなメソッドを使います。 – DjezzzL