我正在尝试编写非常简单的递归方法,但无法使其工作。我有简单的评论层次结构,其 id 如下所示:
1--
2--
4--
3--
5--
现在我想将他们的 id 保存在数组中(树顺序)[0]=1, [1]=2, [2]=4, [3]=3, [4]=5
我开始在 Entry 模型中构建这个数组
def comment_tree
comment = self.comments.find(1) #it's temporary, just to check if it works
return recur(comment,0)
end
private
def recur(comment,i)
@tree[i]=comment.id #added attr_accessible :@tree
if comment.children.any?
comment.children.each {|c| recur(c,i+1)}
else
return
end
@tree
end
这不起作用,因为块运行两次相同的计数器参数recur(4,2)
和recur(3,2)
. 我需要像 global $i 这样的东西来保持这个 arras 索引,但我确信必须有更好的方法来做到这一点。@tree 也是如此,我真的必须向模型添加新变量才能将其用作 recur 方法的返回参数吗?我不会在任何其他地方使用它。