如何在Scala中更新可变哈希映射元素?

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是一个case类。myMutableHashMap被定义为同一个类中writeMyEl函数的类型为scala.collection.mutable.HashMap[(TypeA, TypeB), TypeC]val

Scala (2.8)编译器报告:

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

我做错了什么?

1个回答

11

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接