1

假设我有下一张地图:

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))

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

4

2 回答 2

5

Scaladoc

def +=(elem1: (A, B), elem2: (A, B), elems: (A, B)*): Map.this.type 向这个可收缩集合添加两个或更多元素。

换句话说,有一个重载版本+=可以让您一次添加多个元素。您的示例看起来像是在尝试这样做(对多个参数使用常规约定),但它随后(正确地)抱怨每个参数都是错误的类型。

于 2013-03-01T13:05:46.877 回答
1

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

于 2013-03-01T13:05:03.827 回答