¿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() } 
  • Kotlin sorting array de una class basada en una var dentro de la class
  • Conceptos básicos de Kotlin: ¿cómo agregar o establecer un elemento de un map?
  • Kotlin: Colección genérica a matriz genérica
  • string array literal? ¿Cómo lo codigo simplemente?
  • indexOf en Matrices de Kotlin
  • Método igual para class de datos en kotlin
  • ¿Cómo serializar / deserializar una matriz de objects personalizados en Kotlin?
  • Extrae el valor de text de un object para establecer el text en una list
  • ¿Cómo crear una matriz vacía en kotlin?
  • Acoplar arreglo en Kotlin
  • ¿Manera de Kotlin de filtrar valores máximos de 2 arrays?