2
我想限定一個內部特徵的方法,以便它只能由外部特徵的子類訪問。例如:限定內在特質的方法,使其從外部是私人的,但可從內部訪問
trait Tree[A] {
trait TNode {
final def prevOption: Option[TNode] = Option(prev)
protected[Tree] def prev: TNode // !
}
def test(n: TNode): Option[TNode] = Option(n.prev)
}
如何修改的prev
預選賽,這樣下確實編譯:
trait TreeImpl[A] extends Tree[A] {
def test2(n: TNode): Option[TNode] = Option(n.prev)
}
雖然這不編譯:
def test3[A](t: Tree[A]#TNode) = t.prev
(也就是說,公衆def prev: TNode
不是一個選項)。