在通過Spray.io示例庫時,我在FileUploadHandler路由應用程序示例中遇到了val
這個聲明。理解類型爲some的val聲明語法scala
val Some(HttpHeaders.Content-Type(ContentType(multipart: MultipartMediaType, _))) = header[HttpHeaders.Content-Type]
按我的理解變量聲明竟把val <identifier> = ...
請理解語法的這種模式幫助。
在通過Spray.io示例庫時,我在FileUploadHandler路由應用程序示例中遇到了val
這個聲明。理解類型爲some的val聲明語法scala
val Some(HttpHeaders.Content-Type(ContentType(multipart: MultipartMediaType, _))) = header[HttpHeaders.Content-Type]
按我的理解變量聲明竟把val <identifier> = ...
請理解語法的這種模式幫助。
根據Scala language spec:值定義可以或者有圖案的左側。注意文檔中的PatDef
。
Daniel Westheide's Blog的「價值定義的模式」部分對使用情況進行了很好的概述。
您正在尋找可在scala中匹配的提取器/ mattern,請參閱http://www.scala-lang.org/old/node/112。
你需要的是一個簡單的表格,看看這個片斷:
scala> val Some(t) = Some("Hello")
t: String = Hello
val
比分配操作符稍微複雜一些。
的定義
val p = e
其中p
不僅僅是一個變量名,擴大到
val x = e match { case p => x }
採取在最簡單的例子一個戰利品:
val Some(s) = Some(5)
結果,s
將等於5.
在您的示例中,header[HttpHeaders.Content-Type]
與Some(...)匹配。
然後,我們又有'''作爲標識符。在我的例子中,'Some'圍繞着一個複雜的庫調用。 –