【发布时间】:2014-05-30 10:15:41
【问题描述】:
我正在尝试制作一个特征,我可以将其混合到一个类中以将其定义为树节点。找到一种优雅的方式来做到这一点是有问题的。
以下内容不起作用,因为 this.type 在您分配父级时会导致类型不匹配
trait Node {
def parent:Option[this.type]
def root:this.type =
parent.fold(this)(_.root)
}
这种方法可行,但 T 值可能会被错误分配,而且演员阵容非常丑陋。
trait Node[T <: Node[T]] {
def parent:Option[T]
def root:T =
parent.fold(this)(_.root).asInstanceOf[T]
}
有更严格的方法的想法吗?
【问题讨论】: