Inicialización de Kotlin 2d Array

Por favor, eche un vistazo a mi Inicialización de matriz 2D. El código funciona

class World(val size_x: Int = 256, val size_y: Int = 256) { var worldTiles = Array(size_x, { Array(size_y, { WorldTile() }) }) fun generate() { for( x in 0..size_x-1 ) { for( y in 0..size_y-1 ) { worldTiles[x][y] = WorldTile() } } } } 

El problema es que ejecuta la initialization dos veces. Básicamente quiero crear una instancia del WorldTile-Object en la function generate (). Entonces la línea 3 no debería llamar "nuevo WorldTile" allí. ¿Cómo puedo hacer eso?

¿También es la forma correcta de Kotlin de atravesar un 2d-Array?

Gracias 🙂

Puede hacer que worldTiles una propiedad lateinit y realizar toda la initialization en la function generate :

 class World(val size_x: Int = 256, val size_y: Int = 256) { lateinit var worldTiles: Array<Array<WorldTile>> fun generate() { worldTiles = Array(size_x, { Array(size_y, { WorldTile() }) }) } } 

Si intenta acceder a worldTiles antes de llamar a generate , recibirá una advertencia de exception de que todavía no se ha inicializado.

  • ¿Cómo implementar readLine () !!. ToIntArray () en Kotlin?
  • Cómo usar la biblioteca kmongo para operador de sector
  • ¿Es posible pasar la reference al elemento i-ésimo de una matriz primitiva?
  • Llamadas seguras en Kotlin con Array es confuso
  • Cómo convertir String array a Int array en Kotlin?
  • Acoplar arreglo en Kotlin
  • Kotlin: cómo crear una matriz 2D del tipo String
  • Kotlin - Cómo convertir String a ByteArray
  • ¿Cómo serializar / deserializar una matriz de objects personalizados en Kotlin?
  • Kotlin equivalente para el set de classs de C ++
  • Array Int bidimensional en Kotlin