Article / 2026/05/29

swift 操作符

本文档整理了 Swift 中的比较运算符、它们在 for 和 while 循环中的使用方法,以及相关的逻辑和模式匹配运算符,帮助开发者理解和应用这些运算符控制程序流程。

🚀 Swift 比较运算符与循环

本文档整理了 Swift 中的比较运算符、它们在 forwhile 循环中的使用方法,以及相关的逻辑和模式匹配运算符,帮助开发者理解和应用这些运算符控制程序流程。

1. 比较运算符

比较运算符用于比较两个值,返回布尔值(truefalse)。

运算符名称功能示例
==等于检查两个值是否相等a == b // a = b 时为 true
!=不等于检查两个值是否不相等a != b // a ≠ b 时为 true
>大于检查左侧值是否大于右侧值a > b // a > b 时为 true
<小于检查左侧值是否小于右侧值a < b // a < b 时为 true
>=大于或等于检查左侧值是否大于或等于右侧值a >= b // a ≥ b 时为 true
<=小于或等于检查左侧值是否小于或等于右侧值a <= b // a ≤ b 时为 true

示例

let a = 5, b = 3
print(a >= b) // 输出:true
print(a <= b) // 输出:false

2. 在 for 循环中的使用

在 Swift 的 for 循环中,比较运算符通常通过范围运算符(.....<)或条件语句间接使用。

(1) 范围运算符与比较运算符

Swift 提供两种范围运算符,隐含了比较运算符的逻辑:

  • 闭区间运算符 (...):包含起点和终点,等价于 start >= value && value <= end

    for i in 1...5 {
        print(i) // 输出:1, 2, 3, 4, 5
    }

    等价于:i >= 1 && i <= 5

  • 半开区间运算符 (..<):包含起点但不包含终点,等价于 start >= value && value < end

    for i in 1..<5 {
        print(i) // 输出:1, 2, 3, 4
    }

    等价于:i >= 1 && i < 5

(2) 使用 stride 自定义步长

当需要非默认步长或倒序循环时,可使用 stride(from:to:by:)stride(from:through:by:)

  • stride(from:through:by:):包含终点,等价于 value >= end(倒序时)。

    for i in stride(from: 5, through: 1, by: -1) {
        print(i) // 输出:5, 4, 3, 2, 1
    }

    等价于:i >= 1

  • stride(from:to:by:):不包含终点,等价于 value > end(倒序时)。

    for i in stride(from: 5, to: 1, by: -1) {
        print(i) // 输出:5, 4, 3, 2
    }

    等价于:i > 1

(3) 结合条件语句

for-in 循环中,可使用 if 语句和比较运算符过滤值:

for i in 1...10 {
    if i >= 5 && i <= 8 {
        print(i) // 输出:5, 6, 7, 8
    }
}

3. 在 while 循环中的使用

whilerepeat-while 循环常直接使用比较运算符控制循环条件。

正序循环

var i = 1
while i <= 5 {
    print(i) // 输出:1, 2, 3, 4, 5
    i += 1
}

倒序循环

var j = 5
while j >= 1 {
    print(j) // 输出:5, 4, 3, 2, 1
    j -= 1
}

4. 相关运算符

以下是与比较运算符在逻辑上或功能上相关的运算符,常用于循环或条件控制:

运算符名称功能示例
&&逻辑与两个条件都为真时返回 truea >= 1 && a <= 5
|逻辑或任一条件为真时返回 truea < 1 |a > 5
!逻辑非反转布尔值!(a == b)
~=模式匹配检查值是否匹配某个模式case 1...5 ~= a

模式匹配示例

for i in 1...5 where i ~= 3...5 {
    print(i) // 输出:3, 4, 5
}

5. 注意事项

  • 类型安全:比较运算符要求操作数类型一致或可比较(例如,IntDouble 可比较,自定义类型需实现 Comparable 协议)。
  • 性能:使用 for-in 循环和范围运算符(.....<)通常比手动 while 循环更简洁且优化更好。
  • 可读性:优先使用 for-in 和范围运算符,除非需要复杂条件逻辑,才使用 while 或显式比较运算符。

6. 总结

  • 比较运算符(==, !=, >, <, >=, <=)在 for 循环中多通过范围运算符(..., ..<)或 stride 间接使用。
  • while 循环中,>=<= 常用于显式条件控制。
  • 逻辑运算符(&&, ||, !)和模式匹配(~=)增强循环灵活性。
  • 推荐使用 Swift 的高层次结构(如 for-in 和范围运算符)以提高代码可读性和性能。

Giscus 未启用:请在 src/site.config.ts 中配置 repoId 与 categoryId。