メソッドも使えますclone
!!
def copy(bild: Array[Array[Int]]): Unit = {
val copy = bild.clone
}
アップデート :
Array[Int] は依然として変更可能な参照であるため、クローンを作成しても問題は解決しません.. Andriy Plokhotnyuk のコメントで言及されているように..
問題 :
val og = Array(Array(1, 2, 3), Array(4,5,6)) //> og : Array[Array[Int]] = Array(Array(1, 2, 3), Array(4, 5, 6))
val copy = og.clone //> copy : Array[Array[Int]] = Array(Array(1, 2, 3), Array(4, 5, 6))
copy(0)(0) = 7
og //> res2: Array[Array[Int]] = Array(Array(7, 2, 3), Array(4, 5, 6))
copy //> res3: Array[Array[Int]] = Array(Array(7, 2, 3), Array(4, 5, 6))
ここでの更新は、 ..にもcopy
反映されます。og
ソル:
したがって、主に Array[Int] も複製する必要があります..したがって..
val og = Array(Array(1, 2, 3), Array(4,5,6)) //> og : Array[Array[Int]] = Array(Array(1, 2, 3), Array(4, 5, 6))
val copy = og.map(_.clone) //> copy : Array[Array[Int]] = Array(Array(1, 2, 3), Array(4, 5, 6))
copy(0)(0) = 7
og //> res2: Array[Array[Int]] = Array(Array(1, 2, 3), Array(4, 5, 6))
copy //> res3: Array[Array[Int]] = Array(Array(7, 2, 3), Array(4, 5, 6))
したがって..質問のコピー方法をリファクタリングして..
def copy(bild: Array[Array[Int]]): Unit = {
val copy = bild.map(_.clone)
}