Понимание вызова метода в 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, за исключением того, что метод не должен быть статическим).

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