Достаточно забавно, я вчера остановился на той же проблеме.
Способ реализации собственных типов в настоящее время, если вы переопределяете метод (или значение), то нет способа обратиться к переопределенному методу.
Будет зациклено следующее:
class A { def foo = "a" }
trait B { self: A => override def foo = self.foo + "b" }
(примечание: вы не можете позвонить super.foo
, родитель B
равен ScalaObject
, а не A
)
Я также попытался с еще одним косвенным указанием, но программа по-прежнему зацикливается.
class A { def foo = "a"; def fooA = A.this.foo }
trait B { this: A => override def foo = fooA + "b" }
В настоящее время идет работа над типами самости, возможно, это изменится.