Я бы хотел уточнить метод внутренней черты, чтобы к ней могли обращаться только подклассы внешней черты.Например:
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)
}
В то время как этот делаетне compile:
def test3[A](t: Tree[A]#TNode) = t.prev
(то есть публичный def prev: TNode
не вариант).