Понимание вызова метода в Scala
Я довольно новичок в Scala
и пришел из Java
и был смущен некоторым фрагментом кода при чтении этой документации. Вот код
val route =
path("hello") {
get {
complete(HttpEntity(ContentTypes.`text/html(UTF-8)`, "<h1>Say hello to akka-http</h1>"))
}
}
куда path("hello")
это метод черты:
trait PathDirectives /*extends omitted*/ {
def path[L](pm: PathMatcher[L]): Directive[L] = pathPrefix(pm ~ PathEnd)
// the rest omitted
}
Итак, когда мы вызываем path("hello")
метод, нам нужен объект, реализующий черту, чтобы вызвать его. Но в примере это был просто вызов метода. Так же, как статический метод.
Что я упустил?
1 ответ
Поэтому, когда мы вызываем метод path("hello"), нам нужен объект, реализующий эту черту для его вызова.
Да, и этот объект akka.http.scaladsl.server.Directives
, Причина, по которой вам не нужно писать Directives.path
является то, что код импортирует Directives._
так что вы можете позвонить Directives
'методы напрямую (аналогично статическому импорту в Java, за исключением того, что метод не должен быть статическим).