Map
является неизменным, но вы использовали mutable
переменную m
(потому что вы объявили ее как var
).
Эта строка m=m+(3->"hey")
фактически создает новую карту и присваивает еек вашей переменной m
.
Попробуйте объявить m
как val
и увидите, что вы получите ошибку компиляции.
Но - если вы будете использовать изменяемую карту:
val m = scala.collection.mutable.Map[Int,String]
Вы сможете обновить эту карту (пока вы не можете сделать это с неизменной картой) -
m(3) = "hey"
или
m.put(3,"hey")
Вот какВы обновите содержимое карты, не воссоздавая ее и не изменив переменную m
(как вы это делали ранее с m = m + ...
), потому что здесь m
объявлен как val
, что делает его неизменным, но картаизменяемый.
Вы все еще не можете сделать m = m + ..
, когда он объявлен как val
.
Пожалуйста, обратитесь к этому ответу о различиях между var
и val
.