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
,你会得到一个异常警告,说明它还没有被初始化。