关于scala中可变和不可变集合的困惑

弗兰基

您好,我是Scala的新手,我对方法set。+(element)感到困惑。当我这样做时

var set_1: scala.collection.immutable.Set[Int] = scala.collection.immutable.Set[Int](2)
set_1.+=(1)
println(set_1)

val set_1: scala.collection.mutable.Set[Int] = scala.collection.mutable.Set[Int](2)
set_1.+=(1)
println(set_1)

我得到Set(1, 2)了他们两个的结果第一个使用“ var”和“不可变”,第二个使用“ val”和“可变”。。+()方法的机制是什么?是否重新分配变量set_1或修改set_1的值?谁能帮我?

贾斯汀

在第一种情况下,您使用不可变集,但将其存储在var中。当您调用“ + =”时,结果类似于以下内容,除了创建新变量set2而不是将其存储在变量set1中...

val set1 = Set(2)
val set2 = set1 + Set(1)

原始Set(2)从未修改,而是创建了一个新集合。然后将该新集分配为可变变量set1的值。

在第二种情况下,变量set1指向可变集。创建集合Set(1),然后将同一集合修改为包含Set(1,2)

两者都有用例,但我个人大部分时间会使用不可变集,因为这样更容易推理。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

关于scala中可变和不可变集合的困惑

来自分类Dev

Scala中根集合和不可变集合之间的区别

来自分类Dev

Scala中的示例编程混乱(清单3.5,创建可变和不可变的集合)

来自分类常见问题

Swift中的不可变/可变集合

来自分类Dev

Kotlin和不可变集合?

来自分类Dev

Java中的不可变集合

来自分类Dev

Java中的不可变集合

来自分类Dev

在Scala中将可变集合转换为不可变集合

来自分类Dev

Scala中不可变值的可变字段

来自分类Dev

Scala:可变集合索引比不可变索引快吗?

来自分类Dev

可变Scala集合中的零对象

来自分类Dev

在Scala中,列表是不可变的,但是

来自分类Dev

在Scala中编写更多“功能性”代码以使用不可变集合

来自分类Dev

对F#中的“不可变”列表感到困惑

来自分类Dev

在Scala中使用协变不可变集合

来自分类Dev

在Scala中使用协变不可变集合

来自分类Dev

Python和C / C ++中的可变/不可变对象

来自分类Dev

Python和C / C ++中的可变/不可变对象

来自分类Dev

关于不可变[string]对象的问题和验证C ++

来自分类Dev

不可变但可刷新的集合?

来自分类Dev

Redux和不可变

来自分类Dev

Redux和不可变

来自分类Dev

集合中的可变对象

来自分类Dev

如何将可变集合变成不可变集合

来自分类Dev

不可变或不可修改集合的目的

来自分类Dev

混合对HashMap的可变和不可变引用

来自分类Dev

println内部的可变和不可变引用

来自分类Dev

混合对HashMap的可变和不可变引用

来自分类Dev

在Scala中初始化不可变HashSet的初始容量和负载因子