了解 Scala 中的方法调用

Understanding method invocation in Scala

我是 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的方法:

trait PathDirectives /*extends omitted*/ {

    def path[L](pm: PathMatcher[L]): Directive[L] = pathPrefix(pm ~ PathEnd)
   // the rest omitted
}

因此,当我们调用 path("hello") 方法时,我们需要一个实现特征的对象来调用它。但在示例中,它只是一个方法调用。就像一个静态方法。

我错过了什么?

So, when we invoke the path("hello") method we would need an object implementing the trait to invoke it on.

是的,那个对象是 akka.http.scaladsl.server.Directives。之所以不用写Directives.path是因为代码导入了Directives._,所以可以直接调用Directives'方法(类似于Java中的静态导入除了方法不必是静态的)。