2017-04-25 53 views
1

我在斯卡拉下面的代碼工作:佔位符與可變地圖Scala的功能不工作

var queryMap = Map("name" -> "tim") 
age_list.foreach { age => queryMap += ("age" -> age.toString) } 

如果我包括在功能佔位符,它打破:

var queryMap = Map("name" -> "tim") 
age_list.foreach { queryMap += ("age" -> _.toString) } 

以下錯誤拋出:

value += is not a member of scala.collection.immutable.Map[String,String] 

queryMap變成不可變Map而不是可變Map。我的語法結構有什麼問題嗎?

回答

4

_我不能重現這個錯誤,我得到一個不同的:

error: missing parameter type for expanded function ((x$1: <error>) => "age".$minus$greater(x$1.toString)) 

這意味着,下劃線不綁定到foreach,但對+=後。如果有下劃線,下劃線會被綁定在括號內。因此,你可以刪除它們,它會起作用。

var queryMap = Map("name" -> "tim") 
age_list.foreach { queryMap += "age" -> _.toString } 
+0

輝煌。我沒有意識到它被標記爲括號 –