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.l
和 a2.l
仍然指向相同的 ArrayBuffer
。
我是 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.l
和 a2.l
仍然指向相同的 ArrayBuffer
。