Kotlin 2d数组初始化

请看看我的2D阵列初始化。 代码工作。

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() } } } } 

问题是它运行初始化两次。 基本上我想在generate()函数中实例化WorldTile-Object。 所以3号线不应该在那里叫“新WorldTile”。 我怎样才能做到这一点?

还有,正确的Kotlin穿越2d阵列的方式?

谢谢 :)

您可以使worldTiles属性为lateinit ,并在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() }) }) } } 

如果你在调用generate之前尝试访问worldTiles ,你会得到一个异常警告,说明它还没有被初始化。