2017-04-25 28 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

辉煌。我没有意识到它被标记为括号 –