提问人:Anwesha Bhattacharya 提问时间:3/22/2022 更新时间:3/22/2022 访问量:89
当 Scala 映射被更新并分配给 Var 时会发生什么?
what happens to a scala map when it is updated and assigned to a var?
问:
学习 Scala 的第 3 天。
我想地图是不可变的。我想知道,当我们更新不可变地图并将其分配给新变量时,旧地图会发生什么?内存是不是立即释放了?
另外,当新地图被分配给一个根据定义是可变的变量时,这意味着什么?因为默认情况下是地图,所以即使是新地图也是不可变的。
有人知道答案吗?有没有好的资源可以向我解释这些事情?(引擎盖下发生了什么等)
答:
3赞
Tim
3/22/2022
#1
“旧地图会怎样?”
这取决于是否有其他人在使用它。否则,它使用的内存将在某个时候通过称为“垃圾回收”的过程释放。程序无法判断何时实际发生这种情况。
“当将新地图分配给 Var 时,[这意味着] 什么”
val
两者都定义了一个引用对象的“变量”。区别在于 a 始终指向同一对象,但 a 可以更新为指向不同的对象。var
val
var
相反,和是对象本身的属性。对象将始终具有相同的值,而对象的值可以更改。mutable
immutable
immutable
mutable
评论
2赞
Jean-Philippe Pellet
3/22/2022
也可能是新构建的地图巧妙地与旧地图共享一些内部结构,在这种情况下,旧地图当然不会被垃圾收集。
评论