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

Swift是否支持模式匹配?能否用模式匹配重写给定递归求和函数?

Swift 相关技术问题解答

1. Swift是否支持模式匹配特性

Swift原生支持完整的模式匹配能力,可配合switch、if case、guard case、for case等关键字,实现枚举值匹配、可选值绑定、元组匹配、范围匹配、集合拆分匹配等多种场景的逻辑判断,语法灵活且安全性高。

2. 递归求和函数的模式匹配重写

你提供的求和函数完全可以用模式匹配重写,重写后可以去掉强制解包逻辑,不需要手动判断数组是否为空,编译器会自动校验模式覆盖的穷尽性,代码可读性和安全性都更高,重写后的代码如下:

func sum(_ lst: [Int]) -> Int {
    switch lst {
    case []:
        return 0
    case let [first, rest...]:
        return first + sum(Array(rest))
    }
}

上述代码中:

  • 空数组分支直接匹配空数组模式[],对应原代码的guard判空分支
  • 非空数组分支用[first, rest...]模式拆分出数组的首元素first和剩余元素组成的切片rest,对应原代码取首元素加剩余数组递归求和的逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 06:54:03