我想在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
答案 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?})})