Почему черта с неявными значениями должна быть помещена в начало файла scala?

У меня есть файл Scala, который использует черту для предоставления неявных значений:

class A
class B

class Service  {
  def check(implicit a:A, b:B) = println("hello")
}

object Main extends App with Dependencies {

  def run() {
    val service = new Service
    service.check
  }

}

trait Dependencies {
  implicit val a = new A
  implicit val b = new B
}

Но это не может быть скомпилировано, ошибка:

 error: could not find implicit value for parameter a: A
           service.check
               ^

Но если я поставлю черту Dependencies в начало файла:

trait Dependencies {
  implicit val a = new A
  implicit val b = new B
}

// other code are here

Это компилируется!

Почему мы должны поставить это в начале?

0 ответов

Другие вопросы по тегам