Побочные эффекты mutable.Map scala

Когда я пытаюсь вставить элемент в изменяемый Map, я ожидал, что этот элемент будет вставлен в мою карту, а не в возвращенную карту (например, PF, immutable obj ecc...). По этой причине я использовал изменяемую коллекцию, но в моей карте " a" невозможно вставить элемент (побочные эффекты), но это обновление только в возвращаемом типе, e не в a. Почему? как я могу вставить новый элемент (x -> y) в мою карту a??

def a = scala.collection.mutable.map[Int,Int]()

def x = 5
def y = 6

a+= (x -> y)

println(a.size) // print 0

person Marco_Z    schedule 25.07.2019    source источник


Ответы (1)


Это потому, что вы определили a как def, что означает метод. Это означает, что каждый раз, когда вы вызываете a, возвращается новый экземпляр вашей изменяемой карты. То, что вы хотите, это val:

@ val a = mutable.Map[Int, Int]()
a: mutable.Map[Int, Int] = Map()

@ a += (5 -> 6)
res2: mutable.Map[Int, Int] = Map(5 -> 6)
person Yuval Itzchakov    schedule 25.07.2019