У меня проблема с неявным преобразованием в следующем коде:
trait A {
def send(s: String): String = {
println(s)
s
}
}
object X {
implicit def toB(a: A): B = new B(a)
class B(a: A) {
def <<(s: String): String = a send s
}
}
object Y {
implicit def toB(a: A): B = new B(a)
class B(a: A) {
}
}
object Test extends App {
import X._
import Y._
val a: A = new A {}
a << "Test"
}
Последний оператор в Test вызывает ошибку компиляции:
error: value << is not a member of A
a << "Test"
Однако, если я удаляю import Y._
из Test, он прекрасно компилируется.
Обратите внимание, что в реальном коде X.B и Y.B являются частью Scala DSL для библиотеки Java, и я хотел бы иметь возможность использовать оба в одном модуле компиляции.