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 并非所有收藏都存在于可变和不变的变体中;最后一次检查时,只支持可变优先级队列。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |