【发布时间】:2017-08-22 08:10:14
【问题描述】:
在第三版“Scala 编程”一书中,我看到了一个我无法理解的示例。为了理解它,我将它输入到 scala 解释器中:
scala> import scala.collection.mutable
import scala.collection.mutable
scala> val movieSet = mutable.Set("Hitch", "Poltergeist")
movieSet: scala.collection.mutable.Set[String] = Set(Poltergeist, Hitch)
scala> movieSet
res3: scala.collection.mutable.Set[String] = Set(Poltergeist, Hitch) <<< res3
scala> movieSet += "Shrek"
res4: movieSet.type = Set(Poltergeist, Shrek, Hitch) <<< res4
我的理解是在 mutable.Set 上执行 += 时,Set 应该就地变异(即分配给它的变量不应该改变),但是引用从 res3 更改为 res4。 另外,我理解“val movieSet”是为了创建一个无法更改的值。这不应该导致“val movieSet”保留在 res3 引用中,而不是更改为 res4 吗?
【问题讨论】:
标签: scala