假设我有下一张地图:
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))
然后它成功编译。为什么编译器在第一种情况下不识别元组?
答案 0 :(得分:5)
来自Scaladoc:
DEF + =(elem1:(A,B),elem2:(A,B),elems:(A,B)*):Map.this.type 将两个或多个元素添加到此可收缩集合中。
换句话说,+=
的重载版本允许您一次添加多个元素。你的例子看起来正在尝试这样做(使用多个参数的常规约定),除了它正在抱怨(正确地)每个参数都是错误的类型。
答案 1 :(得分:1)
编译器认为您传递了两个参数,并将您的第一个括号解释为参数列表的分隔符。