当 scala 映射被更新并分配给 var 时会发生什么?

发布于 2025-01-16 01:01:09 字数 197 浏览 0 评论 0原文

学习 Scala 的第三天。

我猜地图是不可变的。我想知道,当我们更新不可变映射并将其分配给新变量时,旧映射会发生什么?内存会立即释放吗?

另外,当新映射被分配给一个根据定义是可变的 var 时,这意味着什么?因为默认情况下有一个地图,即使是新地图也是不可变的。

有谁知道答案吗?有没有好的资源可以向我解释这些事情? (幕后发生了什么等)

Day 3 of learning Scala.

I guess maps are immutable. I was wondering, when we update an immutable map and assign it to a new var, what happens to the old map? Is the memory just immediately freed up?

Also, when the new map is assigned to a var which by definition is mutable, what does this mean? Because a map by default, even the new map is not mutable.

Does anyone know the answers? Is there a good resource that can explain these things to me? ( what happens under the hood etc )

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

永言不败 2025-01-23 01:01:09

“旧地图会发生什么?”

这取决于是否有其他人在使用它。如果没有,它使用的内存将在某个时候被称为“垃圾收集”的进程释放。程序无法判断这种情况何时实际发生。

“当将新映射分配给 var 时[它意味着什么]”

valvar 都定义了一个引用的“变量”一个物体。不同之处在于 val 始终指向同一个对象,但 var 可能会更新为指向不同的对象。

相反,可变不可变对象本身的属性。不可变对象始终具有相同的值,而可变对象的值可以更改。

"what happens to the old map?"

It depends on whether anyone else is using it. If not, the memory it uses will be freed at some point by a process called "garbage collection". There is no way for the program to tell when this actually happens.

"what does [it mean] when a new map is assigned to a var"

val and var both define a "variable" that refers to an object. The difference is that a val always points to the same object but a var may be updated to point to a different object.

In contrast, mutable and immutable are properties of an object itself. An immutable object will always have the same value whereas the value of a mutable object can be changed.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文