Wie mache ich eine tiefe Kopie eines 2D-Arrays in Scala?Tiefe Kopie von 2D-Array in Scala?
Zum Beispiel
val a = Array[Array[Int]](2,3)
a(1,0) = 12
Ich will val b Werte eines aber kopieren, ohne auf das gleiche Array zeigt.
Wie mache ich eine tiefe Kopie eines 2D-Arrays in Scala?Tiefe Kopie von 2D-Array in Scala?
Zum Beispiel
val a = Array[Array[Int]](2,3)
a(1,0) = 12
Ich will val b Werte eines aber kopieren, ohne auf das gleiche Array zeigt.
Gegeben:
val a = Array[Array[Int]]
Sie könnten versuchen: Frage
for(inner <- a) yield {
for (elem <- inner) yield {
elem
}
}
Ein tiefer ist, warum Sie so mit ints do tun möchte? Der Sinn der Verwendung unveränderlicher Typen besteht darin, genau diese Art von Konstrukt zu vermeiden.
Wenn Sie eine allgemeinere haben, dann ist Ihr Hauptanliegen, wie die Instanz von T
klonen, nicht, wie das Array tief zu klonen.
Arrays in Scala sind Java-Arrays und somit veränderbar. –
Sie können die clone
Methode der Array
Klasse verwenden. Für ein mehrdimensionales Array
verwenden Sie map
für die zusätzlichen Abmessungen. Für Ihr Beispiel, erhalten Sie
val b = a.map(_.clone)
es nur zweimal transponieren
a.transpose.transpose
Horrible Schwergewicht, aber cool :) –
Dieses in Ihrem Beispiel nicht gültigen Code ist. Kannst du neu formatieren? –
Diskussion über ein ähnliches Thema finden Sie unter: –