我是Scala的初学者,我对案例类var
的浅表复制如何工作感到困惑。我尝试了一个类似于答案https://stackoverflow.com/a/52967063/11680744的示例。这是我的代码。
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.l
和a2.l
仍指向相同的ArrayBuffer
。