Come si esegue una copia profonda di un array 2D in Scala?Copia profonda di array 2D in Scala?
Per esempio
val a = Array[Array[Int]](2,3)
a(1,0) = 12
voglio val b per copiare i valori di una, ma senza puntare allo stesso array.
Come si esegue una copia profonda di un array 2D in Scala?Copia profonda di array 2D in Scala?
Per esempio
val a = Array[Array[Int]](2,3)
a(1,0) = 12
voglio val b per copiare i valori di una, ma senza puntare allo stesso array.
Dato:
val a = Array[Array[Int]]
si potrebbe provare:
for(inner <- a) yield {
for (elem <- inner) yield {
elem
}
}
una domanda più profonda è perché si vuole fare farlo con int? L'intero scopo dell'utilizzo di tipi immutabili è quello di evitare esattamente questo tipo di costrutto.
Se si dispone di un più generico Array[Array[T]]
, allora la vostra preoccupazione principale è come clonare l'istanza di T
, non come profonda clone matrice.
Gli array in Scala sono array Java e quindi mutabili. –
È possibile utilizzare il metodo clone
della classe Array
. Per un multidimensionale Array
, utilizzare map
sulle dimensioni extra. Per il vostro esempio, si ottiene
val b = a.map(_.clone)
Basta recepirla due volte
a.transpose.transpose
Horribly heavyweight, but cool :) –
Questo non è un codice valido nel tuo esempio. Puoi riformattare? –
La discussione di un argomento simile può essere trovata a: –