我是Kotlin的新手,我想创建一个自定义类的多维数组,并允许null
。像这样
private var array_map = arrayOf<Array<Obstacle?>>()
...
array_map[1][2] = Obstacle()
我该怎么办?谢谢!
答案 0 :(得分:1)
不确定这是否是您想要的,但是假设Obstacle
是一个自定义类,其中的字段为num
,如下所示
data class Obstacle(var num: Int){}
Obstacle
对象的2D数组如下:
val array: Array<Obstacle?> = arrayOf(Obstacle(123), Obstacle(234))
val arrayOfArray: Array<Array<Obstacle?>> = arrayOf(array)
println(arrayOfArray[0][0]) // would print Obstacle(num=123)
println(arrayOfArray[0][1]) // would print Obstacle(num=234)
因此,您应该按照以下说明声明2D数组
val arrayOfArray: Array<Array<Obstacle?>> = arrayOf()
答案 1 :(得分:1)
您可以使用private var arrayMap: Array<Array<Obstacle?>> = arrayOf()
。只需根据需要包裹Array<>
。
答案 2 :(得分:0)
在这种情况下,我经常使用的方法是:
arr2D = Array(sizeA) { Array(sizeB) { content } }
请注意,我用字段名称替换了大小,以说明每个数字/字段代表2D数组每个维度的宽度和高度长度。
此外,content
应该替换为您要填写每个坐标的主要内容,在您的情况下,您似乎打算设置Obstacle()
实例。如果您想在其他时候填写此内容,请放null
或快速参考Any()
。
在最后一种情况下,创建后,您只需执行以下操作即可设置itens:
arr2D[1][2] = Obstacle()
答案 3 :(得分:0)
如果需要在数组元素的构造函数中每个元素的索引:
声明:
var matrix: Array<Array<Obstacle?>>
实例化和初始化:
matrix = Array(numRows) { row ->
Array(numCols) { col ->
Obstacle(row, col)
}
}