我在 scala 中创建伴随对象并尝试在不导入的情况下使用object
隐含函数。class
但是,每当尝试编译代码时,我都会遇到错误:type mismatch;
似乎它无法自动导入隐含。以下是我的代码:
object ImplicitTest5 {
implicit def dollarToRupa(dollar: Dollar): Rupa = {
println("calling .... dollarToEuro")
Rupa(dollar.value)
}
implicit def dollarToEuro(dollar: Dollar): Euro = {
println("calling .... dollarToEuro")
Euro(dollar.value)
}
}
case class Dollar(value: Double)
case class Euro(value: Double)
case class Rupa(value: Double)
class ImplicitTest5 {
private val value = "String"
def conversion = {
val euro: Euro = Dollar(3.1)
println(s" ----- $euro")
}
}
当我import ImplicitTest5._
在课堂上使用时,它会编译并运行良好。根据Programming in Scala, Page: 478它可以正常工作,并且不需要定义导入。
在这种情况下,转换dollarToEuro被称为与Dollar 类型相关联。每次需要从 Dollar 类型的实例进行转换时,编译器都会找到这样的关联转换。无需将转换单独导入您的程序。
我的样本出了什么问题,或者我的理解有误导性?