Case 类 上的浅拷贝究竟如何在 Scala 中工作?

How exactly does shallow copy on Case Classes work in Scala?

我是 Scala 的初学者,我对浅拷贝在案例 class var 中的工作方式感到困惑。 我尝试了一个类似于答案 的例子。 这是我的代码。

case class Entity(eType: String, var unique : Boolean)

val entity = Entity("number", true)
val entity2 = entity.copy()
entity2.unique = false

println(entity)
println(entity2)

输出为:

Entity(number,true)
Entity(number,false)

为什么 entity2 中的更改没有反映在 entity 中?

您的代码等同于链接的 问题 中的代码(与答案相对),

 entity2.unique = false

对应

 p1.firstname = "raghu"

在回答中

 a1.l.remove(1)

不会重新分配 a1.l,因此 a1.la2.l 仍然指向相同的 ArrayBuffer