我无法理解为什么在以下代码中,引入import b._
的导入(implicit def
)必须同时出现在位置1和位置2才能生效。
package a {
abstract class Base {}
}
package b {
import a._
class Derived(i: Int) extends Base {}
object b {
implicit def i2d(i: Int): Derived = new Derived(i)
}
}
import a._
// position 1
import b._
object test extends App {
// position 2
import b._
def doIt(base: Base) {
println("works")
}
doIt(1)
}
答案 0 :(得分:6)
在位置1,您从包 b导入所有内容,在位置2,您从对象 b导入所有内容,其中包括隐式def。你可以在第2位import b.b._
。