副作用 mutable.Map scala
Side effects mutable.Map scala
当我尝试在可变 Map
中插入一个元素时,我预计该元素是插入到我的 Map 而不是 return Map(如 PF、不可变对象 ecc...)
由于这个原因,我使用了可变集合,但在我的地图中 "a" 不可能插入元素(副作用),但此更新仅在 return 类型中,e 不在 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
那是因为您将 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)
当我尝试在可变 Map
中插入一个元素时,我预计该元素是插入到我的 Map 而不是 return Map(如 PF、不可变对象 ecc...)
由于这个原因,我使用了可变集合,但在我的地图中 "a" 不可能插入元素(副作用),但此更新仅在 return 类型中,e 不在 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
那是因为您将 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)