我想定义一些描述不同树节点的特征,如下所示:
trait Node
trait HasParent {
this: Node =>
type P <: Node with HasChildren
def parent: P
def setParent(parent: P)
}
trait HasChildren {
this: Node =>
def children: Seq[Node]
protected def add[T <: Node with HasParent](child: T) {
child.setParent(this) // error: type mismatch;
// found : HasChildren with Node
// required: child.P
// child.setParent(this)
}
}
你能解释一下,为什么这段代码不能编译吗?怎么了?