Scala 编译器找不到在伴随对象中定义的隐式

Scala 编译器找不到在伴随对象中定义的隐式,scala,Scala,我有一个文件,它定义了一个trait及其伴随对象 trait SomeTrait { } object SomeTrait extends SomeConfig { implicit def intToString(v: Int): String = v.toString } 在另一个文件中,我有一个case类,它扩展了一个trait和上面的trait case class SomeCaseClass extends AnotherTrait with SomeTrait { pro

我有一个文件,它定义了一个trait及其伴随对象

trait SomeTrait {
}

object SomeTrait extends SomeConfig {
 implicit def intToString(v: Int): String = v.toString
}
在另一个文件中,我有一个case类,它扩展了一个trait和上面的trait

case class SomeCaseClass extends AnotherTrait with SomeTrait {

  protected def someLoginc(): Unit = {
   // The compiler cannot find the implicit def intToString 
  }
}
为什么编译器找不到同伴对象中定义的隐式

根据我的理解,在伴随对象中定义的隐式将自动引入范围

根据我的理解,在伴随对象中定义的隐式将自动引入范围

不,编译器会查看转换中涉及的类型的伴随对象及其部分。例如,在:

首先,研究了“源”类型的对象伴侣。。。第二,预期类型的伴随对象。。。请注意,超类的伴生对象也被研究

也就是说,要使此规则适用于
intToString
,需要在
Int
String
的伴随对象中声明,或者在它们的超类型中声明(当然不能这样做)

根据我的理解,在伴随对象中定义的隐式将自动引入范围

不,编译器会查看转换中涉及的类型的伴随对象及其部分。例如,在:

首先,研究了“源”类型的对象伴侣。。。第二,预期类型的伴随对象。。。请注意,超类的伴生对象也被研究

也就是说,要使此规则适用于
intToString
,需要在
Int
String
的伴随对象中声明,或者在它们的超类型中声明(当然不能这样做)