加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala系列中可变的或不可变的

发布时间:2020-12-16 09:45:58 所属栏目:安全 来源:网络整理
导读:我对Scala很新,我正在努力了解集合层次结构。我看到’mutable’和’immutable’集合之间有区别,但是我不明白这在实现级别上是什么意思,以及它与val和var的关系。有人可以给我一些洞察力吗?另外,每个收集类都有一个“可变”版本和一个“不可变”的版本,
我对Scala很新,我正在努力了解集合层次结构。我看到’mutable’和’immutable’集合之间有区别,但是我不明白这在实现级别上是什么意思,以及它与val和var的关系。有人可以给我一些洞察力吗?另外,每个收集类都有一个“可变”版本和一个“不可变”的版本,还是有一些只能是“可变”或“不可变”的类?

解决方法

Mutable意味着您可以就地更改收藏。所以,如果你有一个集合c,你用=添加一个元素,那么c已经改变了,所以其他对该集合的引用也是如此。

immutable意味着收集对象从不改变;相反,您可以使用操作(或返回一个新集合)构建新的集合对象。这在并发算法中很有用,因为它不需要锁定来向集合添加东西。这可能是以一些开销为代价的,但这个属性可能非常有用。斯卡拉的不可变藏品是fully persistent data structures。

差异与var和val之间的差异非常相似,但请注意:

>您可以修改绑定到val的可变集合,尽管您不能重新分配val
>你不能原地修改一个不可变的集合,但是如果它被分配给一个var,你可以通过一个操作重新赋值给它构建的集合。

并非所有收藏都存在于可变和不变的变体中;最后一次检查时,只支持可变优先级队列。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读