gpt4 book ai didi

ruby-on-rails - 简单的递归方法

转载 作者:太空宇宙 更新时间:2023-11-03 16:04:29 24 4
gpt4 key购买 nike

我有 Board 模型。董事会可以订阅其他董事会(作为提要)。假设我有这样的木板树:

http://upload.wikimedia.org/wikipedia/commons/thumb/f/f7/Binary_tree.svg/200px-Binary_tree.svg.png

所以:Board.find(2).feeds 是板 5 和 7Board.find(7).feeds 是板 2 和 6 等。

我想编写方法 all_feeds 返回特定版 block 所有级别的所有提要。例如:Board.find(7).all_feeds 将输出 id 为 2,6,5,11 的板数组

我从这样的事情开始:

  def all_feeds
if feeds.empty?
return
else
feeds.each {|feed| feed.all_feeds}
return feeds
end
end

可能必须将此返回提要添加到某个全局数组,但不确定我应该怎么做。

感谢您的帮助。

附言。这并不总是二叉树,您可以有 2 个以上的提要。

最佳答案

我想你想要的可以通过以下方式实现:

def all_feeds
unless feeds.empty?
feeds + feeds.map(&:all_feeds).flatten.compact
end
end

Array#flatten使结果成为一维的,而 Array#compact删除零组件。

关于map(&:all_feeds)部分的解释,可以引用this SO answer :)

关于ruby-on-rails - 简单的递归方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17363271/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com