您好我是scala的新手,我对方法集感到困惑。+(元素)。 当我这样做时
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”和“immutable”,第二个我使用“val”和“mutable”。什么是。+()方法的机制?它重新分配变量set_1或修改set_1的值?
有谁可以帮助我?
答案 0 :(得分:3)
在第一种情况下,您使用的是不可变集,但是您将它存储在var中。当你调用“+ =”时,结果类似于以下内容,除了不是创建一个新的变量set2,你将新的集合存储在变量set1中......
val set1 = Set(2)
val set2 = set1 + Set(1)
永远不会修改原始Set(2),而是创建一个新集。然后将该新集合指定为可变变量set1的值。
在第二种情况下,变量set1指向一个可变集。您创建集Set(1),然后修改该集以包含Set(1,2)
两者都有用例,但我个人大部分时间都会使用不可变集,因为它更容易推理。
答案 1 :(得分:-3)
在我看来,第一个例子不应该编译。在这种情况下,=+
是一个运算符,应用于var set_1
,但set_1.+=
语法使其看起来像是set_1
实例上的常规方法调用。这就是造成混乱的原因。