Похоже, что можно изменить реализацию метода в классе с таким признаком, как:
trait Abstract { self: Result =>
override def userRepr = "abstract"
}
abstract class Result {
def userRepr: String = "wtv"
}
case class ValDefResult(name: String) extends Result {
override def userRepr = name
}
val a = new ValDefResult("asd") with Abstract
a.userRepr
Живой код доступен здесь: http://www.scalakata.com/52534e2fe4b0b1a1c4daa436
Но теперь я хотел бы назвать предыдущую или супер реализацию функции, например:
trait Abstract { self: Result =>
override def userRepr = "abstract" + self.userRepr
}
или
trait Abstract { self: Result =>
override def userRepr = "abstract" + super.userRepr
}
Однако ни одна из этих альтернатив не компилируется. Любая идея, как это можно сделать?