Почему черта с неявными значениями должна быть помещена в начало файла 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
Это компилируется!
Почему мы должны поставить это в начале?