簡體   English   中英

Scala編碼風格

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM