2016-10-30 7 views
1

私はかなり新しいScalaで、Javaから来て、this documentationを読むとコードの一部で混乱しました。ここにコードがあります。我々はpath("hello")メソッドを呼び出すときScalaでのメソッド呼び出しの理解

trait PathDirectives /*extends omitted*/ { 

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

だから、我々はそれを呼び出すための形質を実装するオブジェクトが必要になりますpath("hello")は形質の方法である

val route = 
     path("hello") { 
     get { 
      complete(HttpEntity(ContentTypes.`text/html(UTF-8)`, "<h1>Say hello to akka-http</h1>")) 
     } 
     } 

。しかし、この例では、それは単なるメソッド呼び出しでした。ちょうど静的な方法のように。

私は何を欠席しましたか?

答えて

4

したがって、パス( "hello")メソッドを呼び出すときには、それを呼び出すために特性を実装するオブジェクトが必要になります。

はい、そのオブジェクトはakka.http.scaladsl.server.Directivesです。 Directives.pathを書く必要がないのは、Directives._というコードがインポートされるため、Directivesのメソッドを直接呼び出すことができるためです(Javaの静的インポートに似ていますが、静的である必要はありません)。

関連する問題