¿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 - Cómo convertir String a ByteArray
  • ¿Cómo inicializar una matriz en Kotlin?
  • string array literal? ¿Cómo lo codigo simplemente?
  • Acoplar arreglo en Kotlin
  • Kotlin sorting array de una class basada en una var dentro de la class
  • Función Kotlin Array init
  • Toma la input en la matriz con el bucle
  • Kotlin filter lambda array usando el índice de iteración
  • Arreglo 2D en Kotlin
  • Kotlin: forma idiomática de comprobar la matriz contiene valor
  • ¿Cómo verificar si una matriz de cadenas está orderada en order alfabético o no utiliza Kotlin?