シンボルを用いたハッシュからの呼び出しに失敗する
初めてご質問させて頂きます。
現在、rubyにて複数ユーザーの親子関係を表すハッシュを作成する関数を作成しているのですが、シンボルを用いたハッシュへの代入にて失敗しています。
def createChild(child_id)
return {
person_id: child_id,
children: []
};
end
def searchTree(rootTree, id)
rootTree[:children].map{|tree|
if tree[:person_id] == id
return tree
end
}
rootTree[:children].map{|tree|
searchTree(tree, id)
}
end
def putChild(root_tree, child_id, parent_id)
if parent_id == 0
root_tree[:children] << createChild(child_id)
else
target = searchTree(root_tree, parent_id)
target[:children] << createChild(child_id) #エラー地点
end
end
tree_map = {person_id: nil, children: []}
putChild(tree_map, 1, 0)
putChild(tree_map, 2, 0)
putChild(tree_map, 3, 1)
putChild(tree_map, 4, 1)
putChild(tree_map, 5, 1)
puts tree_map
puts 'try'
putChild(tree_map, 6, 3)
puts tree_map
メソッドputChild
を計6回呼び出していますが、6回目の実行時に #エラー地点
にてエラーが発生しております。
上記ファイルの実行結果が
{:person_id=>nil, :children=>[{:person_id=>1, :children=>[{:person_id=>3, :children=>[]}, {:person_id=>4, :children=>[]}, {:person_id=>5, :children=>[]}]}, {:person_id=>2, :children=>[]}]}
try
sample.rb:24:in `[]': no implicit conversion of Symbol into Integer (TypeError)
from sample.rb:24:in `putChild'
from sample.rb:36:in `<main>'
です。
同じ呼び出し方で5回成功して、6回目が失敗するのがどうにも原因がわからず、もしお判りの方がいらっしゃいましたらご教示頂けますと幸いです。
よろしくお願いいたします。