了解 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中的静态导入除了方法不必是静态的)。
我是 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中的静态导入除了方法不必是静态的)。