如何更新Scala中的mutable hashmap元素?

时间:2010-09-12 10:58:00

标签: scala hashmap mutable

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

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]的{​​{1}}。

Scala(2.8)编译器说:

writeMyEl

我做错了什么?

1 个答案:

答案 0 :(得分:11)

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

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