Scala 编译器找不到在伴随对象中定义的隐式
我有一个文件,它定义了一个trait及其伴随对象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 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
的伴随对象中声明,或者在它们的超类型中声明(当然不能这样做)