gpt4 book ai didi

scala - Scala 集合中的可变与不可变

转载 作者:行者123 更新时间:2023-12-03 07:17:16 25 4
gpt4 key购买 nike

我对 Scala 相当陌生,正在尝试了解集合层次结构。我发现“可变”和“不可变”集合之间存在区别,但我不明白这在实现级别实际上意味着什么以及这与 valvar。谁能给我一些对此的见解?另外,是否每个集合类都有“可变”版本和“不可变”版本,或者是否有一些类只能是“可变”或“不可变”?

最佳答案

可变意味着您可以就地更改集合。因此,如果您有一个集合 c 并使用 += 附加一个元素,则 c 已更改,所有其他引用也已更改该集合。

不可变意味着集合对象永远不会改变;相反,您可以使用 +++ 等操作构建新的集合对象,这些操作返回一个新集合。这在并发算法中非常有用,因为它不需要锁定即可将某些内容添加到集合中。它可能会花费一些开销,但此属性可能非常有用。 Scala 的不可变集合是 fully persistent data structures .

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

  1. 您可以就地修改绑定(bind)到 val 的可变集合,但无法重新分配 val
  2. 您无法就地修改不可变集合,但如果将其分配给 var,您可以将该 var 重新分配给由诸如+之类的操作。

并非所有集合都必然以可变和不可变变体形式存在;我上次检查时,仅支持可变优先级队列。

关于scala - Scala 集合中的可变与不可变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8287425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com