【发布时间】:2017-04-23 02:26:02
【问题描述】:
为什么会打印以下代码:
class TestClass{
case class printClass(s: Symbol) {
def pr() = println(s);
}
implicit def implPrint(i: Symbol) = printClass(i)
}
object TestObject extends TestClass{
def main(args:Array[String]) = {
'x pr
}
}
而下面的代码没有:
class TestClass{
implicit def implPrint(i: Symbol) = println(i)
}
object TestObject extends TestClass{
def main(args:Array[String]) = {
'x
()
}
}
据我所知,编译器会自动调用隐式函数,如果它认为这是一个好主意。为什么编译器在这两种情况下都不调用implPrint()?我在这里俯瞰什么?
【问题讨论】: