Неявная область Scala требует двойного импорта - PullRequest
4 голосов
/ 19 сентября 2011

Я не понимаю, почему в следующем коде импорт (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 Ответ

6 голосов
/ 19 сентября 2011

В позиции 1 вы импортируете все из пакета b, а в позиции 2 вы импортируете все из объекта b, включая неявный def. Вы можете просто import b.b._ в позиции 2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...