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

Swift中如何将指定坐标存入数组?Playgrounds批量放置Block优化问询

简化Swift Playgrounds中批量放置Block的代码

当然可以!这种重复编写16次相同逻辑代码的场景,正好是数组存储坐标+循环遍历的用武之地,既能让代码更简洁,后续维护也方便很多。我给你两种实用的实现思路:

方法一:直接遍历坐标数组(无需扩展)

先把所有需要放置Block的坐标存成元组数组,再遍历数组逐个调用原有的place(_:atColumn:row:)方法:

// 定义所有目标坐标,把16个坐标依次填在这里
let blockCoordinates = [
    (column: 1, row: 6),
    (column: 2, row: 6),
    (column: 3, row: 5),
    (column: 4, row: 5),
    // 继续添加剩下的12个坐标...
]

// 遍历数组批量放置Block
for coordinate in blockCoordinates {
    world.place(Block(), atColumn: coordinate.column, row: coordinate.row)
}

方法二:扩展World类实现你想要的简化写法

如果你希望写法完全贴合world.place(Block(), at: coordinate)的预期,可以给world对象的类型(假设是World类)添加一个扩展,封装一个接收坐标元组的便捷方法:

// 扩展World类,添加自定义的place方法
extension World {
    func place(_ block: Block, at coordinate: (column: Int, row: Int)) {
        // 内部调用原有的方法完成逻辑
        self.place(block, atColumn: coordinate.column, row: coordinate.row)
    }
}

// 现在就能用你想要的简洁写法批量放置了
for coordinate in blockCoordinates {
    world.place(Block(), at: coordinate)
}

额外小贴士

  • 后续如果需要调整某个Block的位置,只需要修改blockCoordinates数组里对应的元组即可,不用重复修改16次代码;
  • 如果要给所有Block添加额外属性(比如颜色、特殊类型),只需要在循环里修改Block()的初始化逻辑,一次修改就能应用到所有Block。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:57:24