2

我在 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

1 回答 1

5

_ 我无法重现此错误,我得到了另一个错误:

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 }  
于 2017-04-25T10:06:03.783 回答