如何导入隐式对象?

时间:2016-06-23 21:18:21

标签: scala scala-2.11

也许这是一个愚蠢的问题,但编译以下内容会给出error: could not find implicit value for evidence parameter of type Outer.Inner.MyImplicit[Int]

object Outer {
  import Inner._

  def someMethod[T : MyImplicit] = {}
  someMethod[Int]

  object Inner {
    sealed trait MyImplicit[T]
    implicit case object IntImplicit extends MyImplicit[Int]
  }
}

为什么Outer对象看到IntImplicit尽管导入了?有没有办法让编译器在IntImplicit对象中找到Inner

更新:如果我取消嵌套Inner怎么办? - 我将如何导入呢?

object Outer {
  import Other._
  def someMethod[T : MyImplicit] = {}
  someMethod[Int]
}

object Other {
  sealed trait MyImplicit[T]
  implicit case object IntImplicit extends MyImplicit[Int]
}

感谢。

1 个答案:

答案 0 :(得分:2)

在导入对象之前,只需定义对象Inner。所以,这很好用。

object Outer {
  object Inner {
    sealed trait MyImplicit[T]
    implicit case object IntImplicit extends MyImplicit[Int]
  }
  import Inner._

  def someMethod[T : MyImplicit] = {}
  someMethod[Int]
}