Как получить доступ к одной из нескольких черт суперкласса? - PullRequest
21 голосов
/ 23 сентября 2011

У меня есть черта, которая реализована из некоторых других черт. Каждая из этих черт переопределяет поведение супертрейта и смешивается с классом:

trait T { 
  def name = "t"
}
trait T1 extends T {
  abstract override def name = "t1"
}
trait T2 extends T {
  abstract override def name = "t2"
}
class C extends T with T1 with T2 {
  def printName = super.name
}

Теперь в классе C я хочу получить доступ к поведению не последней смешанной черты, а к поведению одной из этих черт. Возможно ли это?

1 Ответ

26 голосов
/ 23 сентября 2011

Можно специализировать супер-вызов на определенную черту:

class C extends T with T1 with T2 {
  def printName = super[T1].name
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...