Как именно мелкое копирование на Case Classes работает в Scala? - PullRequest
1 голос
/ 28 января 2020

Я новичок в Scala, и я не понимаю, как работает мелкая копия для класса 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?

1 Ответ

1 голос
/ 28 января 2020

Ваш код эквивалентен коду в связанном вопросе (в отличие от ответа), где

 entity2.unique = false

соответствует

 p1.firstname = "raghu"

В ответ

 a1.l.remove(1)

не переназначает a1.l, поэтому a1.l и a2.l продолжают указывать на одно и то же ArrayBuffer.

...