克隆 ListBuffer 不可变问题 Scala

Cloning ListBuffer immutable issue Scala

我有一个类型为 ListBuffer[ListBuffer[Int]]var x,我在其中使用函数 clone 克隆并设置为另一个 var y,然后我使用函数 update 在这个新的 var y 上更新内容,但是当我检查 var x 的原始内容时它与 var y 相同?为什么是这样?我究竟做错了什么?他们是解决方法吗?我正在尝试获得一个 ListBuffer 的副本,我可以在不更改初始 ListBuffer 的原始内容的情况下对其进行修改。

clone只做浅拷贝,需要深拷贝:

scala> import collection.mutable.ListBuffer
import collection.mutable.ListBuffer

scala> var a = ListBuffer(ListBuffer(1, 2), ListBuffer(3,4))
a: scala.collection.mutable.ListBuffer[scala.collection.mutable.ListBuffer[Int]] = ListBuffer(ListBuffer(1, 2), ListBuffer(3, 4))


scala> var b = a.clone
b: scala.collection.mutable.ListBuffer[scala.collection.mutable.ListBuffer[Int]] = ListBuffer(ListBuffer(1, 2), ListBuffer(3, 4))

scala> b(0)(0) = 100

scala> a
res1: scala.collection.mutable.ListBuffer[scala.collection.mutable.ListBuffer[Int]] = ListBuffer(ListBuffer(100, 2), ListBuffer(3, 4))

scala> b
res2: scala.collection.mutable.ListBuffer[scala.collection.mutable.ListBuffer[Int]] = ListBuffer(ListBuffer(100, 2), ListBuffer(3, 4))

scala> var c = a.clone.map(_.clone)
c: scala.collection.mutable.ListBuffer[scala.collection.mutable.ListBuffer[Int]] = ListBuffer(ListBuffer(100, 2), ListBuffer(3, 4))

scala> c(0)(0) = 1000

scala> c
res3: scala.collection.mutable.ListBuffer[scala.collection.mutable.ListBuffer[Int]] = ListBuffer(ListBuffer(1000, 2), ListBuffer(3, 4))

scala> a
res4: scala.collection.mutable.ListBuffer[scala.collection.mutable.ListBuffer[Int]] = ListBuffer(ListBuffer(100, 2), ListBuffer(3, 4))