代码之家  ›  专栏  ›  技术社区  ›  Ivan

如何在Scala中更新可变的hashmap元素?

  •  4
  • Ivan  · 技术社区  · 14 年前

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

    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定义为 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
    

    我做错什么了?

    1 回复  |  直到 7 年前
        1
  •  11
  •   Alexey Romanov    14 年前

    尝试 myMutableHashMap((x, y)) = z . 事实上,你不需要支票,因为 += 表示“向该映射添加一个新的键/值对。如果映射已经包含键的映射,它将被新值覆盖

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