Tom*_*aad 8 arrays scala deep-copy
如何在Scala中执行2D数组的深层复制?
例如
val a = Array[Array[Int]](2,3)
a(1,0) = 12
Run Code Online (Sandbox Code Playgroud)
我希望val b复制a的值但不指向同一个数组.
您可以使用该类的clone方法Array.对于多维Array,请使用map额外的尺寸.对于你的例子,你得到
val b = a.map(_.clone)
Run Code Online (Sandbox Code Playgroud)
鉴于:
val a = Array[Array[Int]]
Run Code Online (Sandbox Code Playgroud)
你可以尝试:
for(inner <- a) yield {
for (elem <- inner) yield {
elem
}
}
Run Code Online (Sandbox Code Playgroud)
一个更深层次的问题是为什么你想用整数来这样做?使用不可变类型的全部目的就是避免这种构造。
如果您有一个更通用的Array[Array[T]],那么您主要关心的是如何克隆 的实例T,而不是如何深度克隆数组。