Scala隐式范围需要双重导入

时间:2011-09-19 02:44:35

标签: scala

我无法理解为什么在以下代码中,引入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)
}

1 个答案:

答案 0 :(得分:6)

在位置1,您从 b导入所有内容,在位置2,您从对象 b导入所有内容,其中包括隐式def。你可以在第2位import b.b._