在Kotlin中初始化交错阵列

时间:2019-10-07 13:58:44

标签: arrays kotlin

我想在Kotlin中创建一个自定义数组。

class Node(val point: Point) {
    var neighbour : Array<Node?> = Array(4, {_ -> null})
    var prev : Byte = -1
}

现在,在另一个类中,我试图创建一个像这样的对象:

class OtherClass{
    var field: Array<Array<Node?>> = Array(size.x, {_ -> Array(size.y, {_ -> null})})
    }

所以基本上,我需要一个节点网格,所有节点都初始化为null。提供的大小为整数类型。

我收到以下错误:
类型推断失败。预期的类型不匹配:
必需:Array >
找到了:Array

2 个答案:

答案 0 :(得分:6)

科特琳(Kotlin)具有arrayOfNulls函数,这可能会使它更加优雅:

val field: Array<Array<Node?>> = Array(4) { arrayOfNulls<Node?>(4) }

或者,不带可选类型:

val field  = Array(4) { arrayOfNulls<Node?>(4) }

不过,我仍然必须将Node?指定为最里面的类型。

答案 1 :(得分:2)

好的,解决方案非常简单:

var field: Array<Array<Node?>> = Array(size.x, {_ -> Array(size.y, {_ -> null as Node?})})