¿Cómo copyr una matriz bidimensional en Kotlin?

Este método funciona bien. Sin embargo, creo que no es funcional.

fun getCopy(array: Array<BooleanArray>): Array<BooleanArray> { val copy = Array(array.size) { BooleanArray(array[0].size) { false } } for (i in array.indices) { for (j in array[i].indices) { copy[i][j] = array[i][j] } } return copy } 

¿Hay una forma más funcional?

Puede hacer uso de un clone así:

 fun Array<BooleanArray>.copy() = map { it.clone() }.toTypedArray() 

o si desea save algunas asignaciones:

 fun Array<BooleanArray>.copy() = arrayOfNulls<ByteArray>(size).let { copy -> forEachIndexed { i, bytes -> copy[i] = bytes.clone() } copy } as Array<BooleanArray> 

o incluso más conciso como lo sugiere @hotkey :

 fun Array<BooleanArray>.copy() = Array(size) { get(it).clone() } 
  • ¿Cómo convertir una list borrada por types a una matriz en Kotlin?
  • ¿Cómo comparar dos matrices en Kotlin?
  • ¿Manera de Kotlin de filtrar valores máximos de 2 arrays?
  • ¿Es posible pasar la reference al elemento i-ésimo de una matriz primitiva?
  • Inicializando matrices en kotlin
  • Inicialización de matriz de subprocesss múltiples en Kotlin
  • Kotlin filter lambda array usando el índice de iteración
  • ¿Cómo encontrar qué elemento no comparó las matrices en Kotlin?
  • Llamadas seguras en Kotlin con Array es confuso
  • ¿Cómo serializar / deserializar una matriz de objects personalizados en Kotlin?
  • Método igual para class de datos en kotlin