【问题标题】:Placeholder in Scala function doesnt work with mutable MapsScala 函数中的占位符不适用于可变地图
【发布时间】:2017-04-25 09:32:49
【问题描述】:

我在 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。我的语法结构有问题吗?

【问题讨论】:

    标签: scala function function-literal


    【解决方案1】:

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

    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 }  
    

    【讨论】:

    • 太棒了。我没有意识到它被标记在括号中
    猜你喜欢
    • 2016-07-15
    • 2015-03-28
    • 2012-01-27
    • 2011-11-23
    • 2019-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多