2016-01-02 38 views
2

在通過Spray.io示例庫時,我在FileUploadHandler路由應用程序示例中遇到了val這個聲明。理解類型爲some的val聲明語法scala

val Some(HttpHeaders.Content-Type(ContentType(multipart: MultipartMediaType, _))) = header[HttpHeaders.Content-Type]

按我的理解變量聲明竟把val <identifier> = ...

請理解語法的這種模式幫助。

回答

0

您正在尋找可在scala中匹配的提取器/ mattern,請參閱http://www.scala-lang.org/old/node/112

你需要的是一個簡單的表格,看看這個片斷:

scala> val Some(t) = Some("Hello") 
t: String = Hello 
2

val比分配操作符稍微複雜一些。

的定義

val p = e 

其中p不僅僅是一個變量名,擴大到

val x = e match { case p => x } 

採取在最簡單的例子一個戰利品:

val Some(s) = Some(5) 

結果,s將等於5.

在您的示例中,header[HttpHeaders.Content-Type]與Some(...)匹配。

+0

然後,我們又有'''作爲標識符。在我的例子中,'Some'圍繞着一個複雜的庫調用。 –