Как переместить содержимое одного элемента на карте в другой элемент в Scala - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь перенести / скопировать элемент на карте в другой элемент на карте в Scala. Например:

Map(0 -> 5)

Допустим, это начальное состояние карты. Я хочу, чтобы произошло следующее:

Map(0 -> 0, 1 -> 5)

Итак, после того, как изменение произошло, 0, которое первоначально указывает на 5, но после преобразования 0 будет указывать на 0, и добавляется новый элемент (1 ), который указывает на 5.

Я пробовал следующее:

theMap + (pointer -> (theMap(pointer) + 1))

Однако я получаю следующую ошибку:

java.util.NoSuchElementException: key not found: 1

Спасибо за любую помощь!

1 Ответ

1 голос
/ 09 января 2020

Это должно сработать.

def transfer(pointer: Int)(map: Map[Int, Int]): Map[Int, Int] =
  map.get(key = pointer)  match {
    case Some(value) =>
      map ++ Map(
        pointer -> 0,
        (pointer + 1) -> value
      )

    case None =>
      // Pointer didn't exist, what should happen here?
      map // For now returning the map unmodified.
  }

И вы можете использовать это так:

transfer(pointer = 0)(map = Map(0 -> 5))
// res: Map[Int,Int] = Map(0 -> 0, 1 -> 5)
...