了解Scala中的方法调用

时间:2016-10-30 18:05:42

标签: scala method-invocation

我对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")方法时,我们需要一个实现特征的对象来调用它。但在示例中,它只是一个方法调用。就像静态方法一样。

我错过了什么?

1 个答案:

答案 0 :(得分:4)

  

因此,当我们调用路径(“hello”)方法时,我们需要一个实现特征的对象来调用它。

是的,该对象是akka.http.scaladsl.server.Directives。您不需要编写Directives.path的原因是代码导入Directives._,因此您可以直接调用Directives'方法(类似于Java中的静态导入,除了方法没有)不得不是静止的。