我有一个树对象,它将延迟深度优先搜索实现为TraversableView
.
import collection.TraversableView
case class Node[T](label: T, ns: Node[T]*)
case class Tree[T](root: Node[T]) extends TraversableView[T, Traversable[_]] {
protected def underlying = null
def foreach[U](f: (T) => U) {
def dfs(r: Node[T]): TraversableView[T, Traversable[_]] = {
Traversable(r.label).view ++ r.ns.flatMap(dfs(_))
}
dfs(root).foreach(f)
}
}
这非常简洁并且看起来很有效;但是,这种underlying = null
方法让我很紧张,因为我不明白它的含义。(IntelliJ 为我写了那行。)我想它可能是正确的,因为在这种情况下,树没有底层的严格表示,但我不确定。
上面的代码是正确的,还是我需要做更多的事情underlying
?