You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中如何将坐标数组追加到二维整型数组作为函数返回值

问题根因
  • Kotlin 中的 Array 是固定长度的静态数组结构,初始化完成后无法直接在原对象上修改长度、增删元素
  • 你调用的 plusElement() 方法不会修改原数组实例:它的执行逻辑是创建一个全新的数组,把原数组的所有元素、待追加的新元素依次拷贝进新数组后返回。你之前的代码没有把这个返回的新数组赋值给原temp变量,方法调用完成后原数组仍然是空状态,自然达不到追加效果。
修正方案

方案1:最小改动适配现有数组逻辑

只需要把原来没有接收返回值的调用,改成对temp变量的重新赋值即可:

// 原有错误代码
temp.plusElement(slice)

// 修正后代码,将方法返回的新数组覆盖赋值给temp
temp = temp.plusElement(slice)

注意:这种写法每次追加元素都需要全量拷贝数组内容,当循环遍历次数较多时会产生不必要的性能消耗。

方案2:适配动态采集场景的更优写法

你需要在循环中持续追加坐标数据,更合理的实现是在遍历阶段使用可变长度的集合存储数据,等所有坐标采集完成后,再转换成函数要求的 Array<Array<Int>> 类型返回:

  • 初始化可变列表替代静态空数组:
    val tempList = mutableListOf<IntArray>()
    
  • 循环中符合追加条件时,直接调用列表的追加方法,无需手动处理数组拷贝:
    val slice = intArrayOf(xstart, ystart - i)
    tempList.add(slice)
    
  • 原代码中需要清空临时存储的场景(比如越界判断后要将临时结果置空),直接调用列表的清空方法即可:
    tempList.clear()
    
  • 所有遍历逻辑完成后,将列表转换成目标数组类型返回:
    val result: Array<Array<Int>> = tempList.toTypedArray()
    

内容的提问来源于stack exchange,提问作者RileyRat5x

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.27 13:57:01