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