我对Scala
很新,来自Java
,在阅读this documentation时被一段代码搞糊涂了。这是代码。
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")
方法时,我们需要一个实现特征的对象来调用它。但在示例中,它只是一个方法调用。就像静态方法一样。
我错过了什么?
答案 0 :(得分:4)
因此,当我们调用路径(“hello”)方法时,我们需要一个实现特征的对象来调用它。
是的,该对象是akka.http.scaladsl.server.Directives
。您不需要编写Directives.path
的原因是代码导入Directives._
,因此您可以直接调用Directives
'方法(类似于Java中的静态导入,除了方法没有)不得不是静止的。