Mar*_*o_Z 2 scala side-effects
当我尝试在mutable中插入一个元素时Map,我希望这个元素是在Map中插入而不是在Map中返回(例如PF,不可变obj ecc ...)。出于这个原因,我使用了mutable集合,但是在我的地图中“ ”是不可能的插入元素(副作用),但是此更新仅在返回类型中,e在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
Run Code Online (Sandbox Code Playgroud)
那是因为您已定义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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43 次 |
| 最近记录: |