9

如何在 Scala 中对二维数组进行深度复制?

例如

val a = Array[Array[Int]](2,3)
a(1,0) = 12

我希望 val b 复制 a 的值但不指向同一个数组。

4

3 回答 3

10

您可以使用类的clone方法Array。对于多维Arraymap请在额外维度上使用。对于你的例子,你得到

val b = a.map(_.clone)
于 2013-04-28T22:41:04.017 回答
2

只需转置两次

a.transpose.transpose
于 2015-10-20T11:59:03.420 回答
0

鉴于:

val a = Array[Array[Int]]

你可以试试:

for(inner <- a) yield {
  for (elem <- inner) yield {
    elem
  }
}

一个更深层次的问题是你为什么要对整数这样做?使用不可变类型的全部意义在于避免这种结构。

如果您有更通用的Array[Array[T]],那么您主要关心的是如何克隆 的实例T,而不是如何深度克隆数组。

于 2009-12-11T22:57:08.407 回答