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 convertir String array a Int array en Kotlin?
  • Kotlin - Cómo convertir String a ByteArray
  • Arreglo 2D en Kotlin
  • Función Kotlin Array init
  • Cómo usar la biblioteca kmongo para operador de sector
  • Método igual para class de datos en kotlin
  • Kotlin: forma idiomática de comprobar la matriz contiene valor
  • Conceptos básicos de Kotlin: ¿cómo agregar o establecer un elemento de un map?
  • Kotlin: cómo crear una matriz 2D del tipo String
  • cómo a la matriz de initialization en Kotlin?
  • ¿Cómo copyr una matriz bidimensional en Kotlin?