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

如何在Swift中创建二维平面航点数组并实现遍历与访问?

在Swift中创建航点数组的最佳实践

嗨,我完全理解你习惯了VB里那种直接声明二维数组的简单方式,Swift虽然语法思路不同,但实现你要的功能其实很直观,甚至更灵活!下面给你两种可行的方案,优先推荐第一种,因为代码可读性和可维护性更好:

方案一:用自定义结构体(推荐)

首先我们可以定义一个Waypoint结构体来封装每个航点的x、y坐标,这样代码逻辑更清晰,也不容易搞混坐标顺序:

// 定义航点结构体
struct Waypoint {
    var x: Double
    var y: Double
}

// 创建航点数组
var waypoints: [Waypoint] = []

// 添加示例航点
waypoints.append(Waypoint(x: 2.3, y: 4.5))
waypoints.append(Waypoint(x: 3.1, y: 5.0))
// ... 依次添加剩下的81个航点即可

遍历修改指定范围的航点

注意Swift数组是从0开始索引的,所以你说的“第10至25个点”对应的索引是9到24,修改代码如下:

// 将第10到25个点的x坐标向右移动3(即x加3)
for index in 9...24 {
    waypoints[index].x += 3.0
}

访问单个航点

同样,第42个点对应的索引是41,直接通过下标访问即可:

let targetWaypoint = waypoints[41]
print("第42个点的坐标:x = \(targetWaypoint.x), y = \(targetWaypoint.y)")

方案二:使用二维数组(类似VB的方式)

如果你更倾向于和VB类似的二维数组写法,Swift也支持数组的数组,不过这种方式可读性稍差,容易记错x/y对应的索引位置:

// 创建二维数组,每个子数组存储[x, y]
var waypoints2D: [[Double]] = []

// 添加示例航点
waypoints2D.append([2.3, 4.5])
waypoints2D.append([3.1, 5.0])
// ... 继续添加其他航点

// 修改第10到25个点的x坐标
for index in 9...24 {
    waypoints2D[index][0] += 3.0 // 0对应x,1对应y
}

// 访问第42个点的坐标
let x42 = waypoints2D[41][0]
let y42 = waypoints2D[41][1]

小提示

优先选择结构体方案,因为它的语义更明确——你能直接通过.x、.y访问坐标,而不用去记哪个索引对应哪个值,后续维护代码也更方便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:29:12