如何在 Scala 中对二维数组进行深度复制?
例如
val a = Array[Array[Int]](2,3)
a(1,0) = 12
我希望 val b 复制 a 的值但不指向同一个数组。
您可以使用类的clone
方法Array
。对于多维Array
,map
请在额外维度上使用。对于你的例子,你得到
val b = a.map(_.clone)
只需转置两次
a.transpose.transpose
鉴于:
val a = Array[Array[Int]]
你可以试试:
for(inner <- a) yield {
for (elem <- inner) yield {
elem
}
}
一个更深层次的问题是你为什么要对整数这样做?使用不可变类型的全部意义在于避免这种结构。
如果您有更通用的Array[Array[T]]
,那么您主要关心的是如何克隆 的实例T
,而不是如何深度克隆数组。