[英]Scala coding style
我無法確定下面的代碼代表什么,因為這些語法並未在Scala文檔中完整列出。 有人可以闡明下面的每一行嗎? 如果上述標題需要更改為可以使他人受益的內容,請告訴我。
val route =
path("hello") {
get {
complete(HttpEntity(ContentTypes.`text/html(UTF-8)`, "<h1>Say hello to akka-http</h1>"))
}
}
參考: http : //doc.akka.io/docs/akka-http/current/scala/http/introduction.html#http-client-api
您可能知道,這是akka http中的路由定義。 它們在akka文檔中都有很好的描述。 此特定路線的工作方式如下:
path("hello"){...}
-驗證路徑的指令 get{...}
-驗證http動詞(方法)的指令,因此它轉換為GET / hello complete(HttpEntity(...))
是一個響應。 這些是按名字呼叫的參數,在Scala語言規范的各個地方都有介紹。 基本上,如果您有這樣的聲明:
def path[R](string: String)(body: => R): R = ...
您將需要提供一個字符串和一個代碼塊 ( body
),這是一個按名稱調用的塊。 在這種情況下,如果body
返回類型R
的結果,則將是path
的推斷返回類型。 因此,該方法可以稱為
path("hello") {
"world"
}
在使用“按名字調用”塊之前,不會調用它。
這是Rob Norris的一個很好的解釋: https : //tpolecat.github.io/2014/06/26/call-by-name.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.