Как обновить изменяемый элемент hashmap в Scala? - PullRequest
4 голосов
/ 12 сентября 2010

Я написал функцию, очень похожую на эту:

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 Ответ

11 голосов
/ 12 сентября 2010

Попробуйте myMutableHashMap((x, y)) = z.На самом деле, вам не нужна проверка, так как в документации для += написано «Добавляет новую пару ключ / значение к этой карте. Если карта уже содержит отображение для ключа, она будет переопределена новым значением«.Таким образом, ваша функция может быть записана как

def writeMyEl (x: TypeA, y: TypeB, z : TypeC) {
  myMutableHashMap += (x, y) -> z
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...