Скажите, у меня есть следующее:
class A {
def foo() = { println("foo") }
}
case class B(a: A)
implicit def toA(b: B) = b.a
implicit def wrapper(a: A) = new {
def bar() = a.foo()
}
Тогда я не могу сделать следующее:
val b = B(new A())
b.bar() // cannot resolve
Скорее мне нужно явно вызывать toA () неявным:
toA(b).bar()
или сделать
(b: A).bar()
Почему компилятор не знает, как применить первое неявное значение перед тем, как применить второе неявное, упаковщик?