Имплициты и порядок объявления

Вот упрощение того, с чем я столкнулся. Это компилируется:

trait A { implicit val x = 1 }
trait B extends A { val y = implicitly[Int] }

В то время как это не (не удалось найти неявное значение):

trait B extends A { val y = implicitly[Int] }
trait A { implicit val x = 1 }

Я попытался прояснить свои намерения, указав собственный тип: trait A { this: B => ... }, но безрезультатно.

Как справиться с такими зависимостями, не беспокоясь о том, как устроен мой код?

6
задан elbowich 7 March 2012 в 11:27
поделиться