Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala隐式转换问题_Scala_Implicit Conversion - Fatal编程技术网

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"