关于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 条评论
登录 后参与评论

相关文章