Scala Map + =操作

时间:2013-03-01 13:00:57

标签: scala

假设我有下一张地图:

import scala.collection.mutable._
val countries = Map[String, String](
    ("Paris", "France"), 
    ("Washington", "USA"),
    ("London", "England")
)

然后我尝试向该映射添加一些值(我从命令行参数中获取值):

countries += (args(0), args(1))

但是上面的代码没有编译说

found   : String
required: (String, String)

当我将其更改为

countries += ((args(0), args(1)))

countries += (args(0) -> args(1))

然后它成功编译。为什么编译器在第一种情况下不识别元组?

2 个答案:

答案 0 :(得分:5)

来自Scaladoc

  

DEF   + =(elem1:(A,B),elem2:(A,B),elems:(A,B)*):Map.this.type   将两个或多个元素添加到此可收缩集合中。

换句话说,+=的重载版本允许您一次添加多个元素。你的例子看起来正在尝试这样做(使用多个参数的常规约定),除了它正在抱怨(正确地)每个参数都是错误的类型。

答案 1 :(得分:1)

编译器认为您传递了两个参数,并将您的第一个括号解释为参数列表的分隔符。