4

我写了一个与此非常相似的函数:

def writeMyEl (x: TypeA, y: TypeB, z : TypeC) {
  if (myMutableHashMap.contains((x, y)))
    myMutableHashMap(x, y) = z else
      myMutableHashMap += (x, y) -> z
}

在实际代码中,类型 A 和 B 是枚举,而 C 是案例类。myMutableHashMap 被定义为与函数在同一类中val的类型。scala.collection.mutable.HashMap[(TypeA, TypeB), TypeC]writeMyEl

Scala (2.8) 编译器说:

error: too many arguments for method update: (key: (TypeA, TypeB),value: TypeC)Unit

我究竟做错了什么?

4

1 回答 1

11

试试myMutableHashMap((x, y)) = z。事实上,您不需要检查,因为文档+=说“向此映射添加新的键/值对。如果映射已经包含键的映射,它将被新值覆盖。” 所以你的函数可以写成

def writeMyEl (x: TypeA, y: TypeB, z : TypeC) {
  myMutableHashMap += (x, y) -> z
}
于 2010-09-12T11:32:33.290 回答