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

Swift中如何实现每次遍历集合中的三个元素?

实现Sequence的三元组分块遍历

可以通过扩展Sequence协议,实现一个triples()方法,完成每次遍历三个元素的需求,不足三个的位置用nil填充:

public extension Sequence {
    func triples() -> AnyIterator<(Element, Element?, Element?)> {
        return AnyIterator(sequence(state: makeIterator(), next: { iterator in
            guard let first = iterator.next() else {
                return nil
            }
            let second = iterator.next()
            let third = iterator.next()
            return (first, second, third)
        }))
    }
}

代码说明

  • 利用sequence(state:next:)维护迭代器的状态,保证遍历的连续性
  • 先尝试取出第一个元素,若不存在则终止迭代
  • 依次尝试取出第二个、第三个元素,元素不足时自动用nil填充
  • 通过AnyIterator包装,返回符合需求的迭代器

使用示例

let array = [1, 2, 3, 4, 5, 7, 8, 9, 10]
let tripleArray = Array(array.triples())
print(tripleArray)
// 输出结果:[(1, Optional(2), Optional(3)), (4, Optional(5), Optional(7)), (8, Optional(9), Optional(10))]

注:你期望输出中的(4, 5, 6)应为笔误,原数组中无元素6,实际会返回(4, Optional(5), Optional(7))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 20:06:22