【问题标题】:Groovy cast List<List<Integer>> into int[][]Groovy 将 List<List<Integer>> 转换为 int[][]
【发布时间】:2014-02-26 02:16:04
【问题描述】:

我正在将 Groovy 嵌入到我的游戏引擎中,并从我的脚本中调用这个 Groovy 方法来获取一些信息

def getSameTiles() {
    final int cx = 0;
    final int cy = 6;

    return  [
                [
                    [cx + 0, cy + 0],
                    [cx + 1, cy + 0],
                    [cx + 2, cy + 0],
                    [cx + 0, cy + 1],
                    [cx + 1, cy + 1],
                    [cx + 2, cy + 1],
                    [cx + 0, cy + 2],
                    [cx + 1, cy + 2],
                    [cx + 2, cy + 2],
                    [cx + 3, cy + 1],
                    [cx + 4, cy + 1],
                    [cx + 3, cy + 2],
                    [cx + 4, cy + 2],
                ],
            ];
}

我可以做到as List&lt;Integer&gt;[],但有没有一种优雅的方法可以将它变成int[][]

【问题讨论】:

    标签: arraylist multidimensional-array groovy casting


    【解决方案1】:
    • 矩阵中的每个条目都需要*.toArray() 才能成为Object[]
    • 最终将返回值推断为矩阵Object[][]

    如下图

    def getSameTiles() {
        final int cx = 0
        final int cy = 6
    
        return  [
                    [
                        [cx + 0, cy + 0],
                        [cx + 1, cy + 0],
                        [cx + 2, cy + 0],
                        [cx + 0, cy + 1],
                        [cx + 1, cy + 1],
                        [cx + 2, cy + 1],
                        [cx + 0, cy + 2],
                        [cx + 1, cy + 2],
                        [cx + 2, cy + 2],
                        [cx + 3, cy + 1],
                        [cx + 4, cy + 1],
                        [cx + 3, cy + 2],
                        [cx + 4, cy + 2],
                    ]*.toArray()
                ] as Object[][]
    }
    

    【讨论】:

      猜你喜欢
      • 2016-12-26
      • 1970-01-01
      • 2010-09-06
      • 1970-01-01
      • 2021-07-16
      • 2022-09-30
      • 2012-05-29
      相关资源
      最近更新 更多