【问题标题】:Initializing interleaved Arrays in Kotlin在 Kotlin 中初始化交错数组
【发布时间】:2020-02-04 20:13:06
【问题描述】:

我想在 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

【问题讨论】:

    标签: arrays kotlin


    【解决方案1】:

    Kotlin 有一个 arrayOfNulls 函数,这可能会使它更加优雅:

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

    或者,没有可选类型:

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

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

    【讨论】:

      【解决方案2】:

      好的,解决方法很简单:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-10-07
        • 1970-01-01
        • 2021-07-08
        • 2015-09-30
        • 1970-01-01
        • 2014-03-01
        • 2019-10-15
        相关资源
        最近更新 更多