副作用可变。地图标量

时间:2019-07-25 09:30:37

标签: scala side-effects

当我尝试在可变Map中插入元素时,我希望该元素插入到我的Map中而不​​是返回Map中(例如PF,不可变的obj ecc ...) 由于这个原因,我使用了可变集合,但是在我的地图中“ a”是不可能插入元素(副作用)的,但是此更新仅在返回类型中进行,而在a中则没有。 为什么?如何在地图中插入新元素(x-> y)?

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

def x = 5
def y = 6

a+= (x -> y)

println(a.size) // print 0

1 个答案:

答案 0 :(得分:8)

那是因为您已将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)