递归搜索嵌套 R6 树中的节点 - 如何打破循环?

Recursive search for a node in nested R6 tree - How to break the loop?

我正在尝试在 R 中实现类似于以下的搜索算法,该算法在嵌套 R6 classes:

的树中搜索节点
search = function(node){
  if (private$name == node){
    self
  } else {
    if(all(!is.na(private$list))){
      for (i in 1:length(private$list)){
        private$list[[i]]$search(node)
      }
    } 
  }
}

在这里,搜索是 R6 class“节点”的一个 public 功能。这个 class 有一个私有名称和一个其他节点的私有列表 - 所以它是嵌套树 R6 classes.

的父节点

问题是算法访问了正确的节点,但函数无法生成输出,因为嵌套循环没有中断,它继续循环遍历所有节点,直到访问所有节点。使用 return(self) 似乎没有什么不同。

有没有办法通过访问父级的属性等来打破外循环?

非常感谢任何帮助!

我不太清楚你想达到什么目的,但也许这可以解决它:


      for (i in 1:length(private$list)){
        n <- private$list[[i]]$search(node)
        if(!is.null(n)) {
          return(n)
        }
      }