Scala隐式转换问题
我在以下代码中遇到隐式转换问题:Scala隐式转换问题,scala,implicit-conversion,Scala,Implicit Conversion,我在以下代码中遇到隐式转换问题: 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
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"
}
trait A{
def发送(s:字符串):字符串={
印地安(s)
s
}
}
对象X{
隐式def toB(a:a):B=新的B(a)
B类(a:a){
def当您在同一范围内导入两者时,Y.toB
将覆盖X.toB
。如果我将import Y.\u
放在import X.\u
之前,那么它会工作。此外,如果我将Y
重命名为其他隐式(例如toYB
),那么它就可以工作,不管你把它放在什么顺序。这就是你所期望的。这就像Java中的静态导入。如果你调用隐式方法作为toB(a)
,如果后面的一个没有重写另一个,编译器怎么知道你指的是哪一个呢?OP应该像你说的那样给隐式的defs命名,比如AtoXB
和AtoYB
,因为X.B
和Y.B
是不同的类。事实上,我并不期望隐式的方法名会导致p问题。我已经重新命名,现在可以正常工作了,谢谢!
error: value << is not a member of A
a << "Test"