Scala &引用+=&引用;是否会重新分配?

Scala &引用+=&引用;是否会重新分配?,scala,Scala,请参阅以下代码: val names = Set("Mike", "Jack") names += "Jeff" 将出现一个错误: error: reassignment to val 我在一些书中看到,它说+=实际上是一种方法,代码可以是: val names = Set("Mike", "Jack") names.+=("Jeff") 如果+=是一个方法,为什么它会分配“名称”?scala.collection.mutable.Set有+=方法。因此,不管val或var是什么,您只需

请参阅以下代码:

val names = Set("Mike", "Jack")
names += "Jeff"
将出现一个错误:

error: reassignment to val 
我在一些书中看到,它说
+=
实际上是一种方法,代码可以是:

val names = Set("Mike", "Jack")
names.+=("Jeff")

如果
+=
是一个方法,为什么它会分配“名称”?

scala.collection.mutable.Set有+=方法。因此,不管val或var是什么,您只需在基础集合上调用一个方法。但是scala.collection.immutable.Set没有+=方法,但有+方法在Scala中有特殊的意义;它可以这样应用,names=names+“Jeff”,由于这是对val“names”的重新分配,编译器将报告错误

示例(+已应用,并在+=)处进行重新分配

简短的回答:

scala> val names = collection.mutable.Set("Mike", "Jack")
names: scala.collection.mutable.Set[java.lang.String] = Set(Jack, Mike)

scala> names += "Jeff"
res23: names.type = Set(Jack, Jeff, Mike)
或者您可以像这样导入可变集:

import scala.collection.mutable.Set
import scala.collection.mutable.Set