Scala: добавление к массиву в пределах карты

Легко найти решение для замены только первой или первой пары экземпляров (путем указания значения счета). Существует не так много решений для замены последней или последней пары экземпляров.

Возможно, что-то вроде str_replace ($ find, $ replace, $ subject, -3) должно заменить последние три экземпляра.

В любом случае, просто предложение.

1
задан bcr 13 July 2018 в 13:03
поделиться

1 ответ

Поскольку это неизменяемая Карта, вы не можете изменить значение на месте, как вы пытались сделать, используя map(0) = map(0) :+ 0.01. Одним из возможных решений является использование метода updated, который возвращает обновленную карту (все методы, такие как add , remove , изменить в неизменяемых данных структуры возвращают новые данные struture):

map = map.updated(0, map(0) :+ 0.01)

Некоторые примеры для доказательства:

var map = Map[Int, Array[Double]]()
map += (0 -> new Array[Double](5))
map = map.updated(0, map(0) :+ 0.01)
map(0) // res1: Array[Double] = Array(0.0, 0.0, 0.0, 0.0, 0.0, 0.01)
map = map.updated(0, map(0) :+ 0.02)
map(0) // res2: Array[Double] = Array(0.0, 0.0, 0.0, 0.0, 0.0, 0.01, 0.02)
2
ответ дан Duelist 17 August 2018 в 12:49
поделиться
  • 1
    Это невозможно. Я приведу несколько примеров – Duelist 13 July 2018 в 13:10
  • 2
    Хорошо, жаль, что вы проведете, но я могу подтвердить, что ваше решение действительно работает и не оставляет записи на карте. Спасибо за вашу помощь. – bcr 13 July 2018 в 13:12
Другие вопросы по тегам:

Похожие вопросы: