Легко найти решение для замены только первой или первой пары экземпляров (путем указания значения счета). Существует не так много решений для замены последней или последней пары экземпляров.
Возможно, что-то вроде str_replace ($ find, $ replace, $ subject, -3) должно заменить последние три экземпляра.
В любом случае, просто предложение.
Поскольку это неизменяемая Карта, вы не можете изменить значение на месте, как вы пытались сделать, используя 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)