学习笔记-Swift 运算符

在 Swift 编程语言中,运算符(Operators) 是用于执行特定操作的符号。以下是 Swift 支持的运算符分类及详细说明:


一、算术运算符

  • 基本算术
    swift
    复制代码
    let a = 10 + 5 // 加 let b = 10 - 5 // 减 let c = 10 * 5 // 乘 let d = 10 / 3 // 除(结果为 3) let e = 10 % 3 // 取余(结果为 1)
  • 浮点数取余
    swift
    复制代码
    let f = 10.5.truncatingRemainder(dividingBy: 3) // 1.5

二、复合赋值运算符

swift
复制代码
var x = 5 x += 3 // x = 8 x -= 2 // x = 6 x *= 4 // x = 24

三、比较运算符

swift
复制代码
1 == 1 // true 1 != 2 // true 2 > 1 // true 2 < 5 // true 3 >= 3 // true // 恒等运算符(判断对象引用) let obj1 = UIView() let obj2 = obj1 obj1 === obj2 // true

四、逻辑运算符

swift
复制代码
true && false // false(逻辑与) true || false // true (逻辑或) !true // false(逻辑非) // 短路求值:若左侧已确定结果,右侧不会执行 false && someExpensiveFunction()

五、三元条件运算符

swift
复制代码
let score = 85 let result = score >= 60 ? "及格" : "不及格" // "及格"

六、Nil 合并运算符

swift
复制代码
let defaultName = "Guest" var userName: String? = nil let finalName = userName ?? defaultName // "Guest"

七、区间运算符

  • 闭区间 (a...b):
    swift
    复制代码
    for i in 1...5 { print(i) } // 输出 1-5
  • 半开区间 (a..<b):
    swift
    复制代码
    let names = ["A", "B", "C"] for i in 0..<names.count { print(names[i]) }
  • 单侧区间
    swift
    复制代码
    let range = ...5 // 包含所有小于等于5的数

八、位运算符

swift
复制代码
let a: UInt8 = 0b00110011 let b: UInt8 = 0b11100001 a & b // 按位与 (0b00100001) a | b // 按位或 (0b11110011) a ^ b // 按位异或 (0b11010010) ~a // 按位取反 (0b11001100) a << 2 // 左移两位 (0b11001100)

九、溢出运算符

处理数值溢出场景:

swift
复制代码
let maxUInt8 = UInt8.max // 255 let overflow = maxUInt8 &+ 1 // 0(溢出后归零)

十、运算符优先级与结合性

优先级从高到低示例(完整列表参考官方文档):

  1. [] ()(成员访问、函数调用)
  2. ! ~ + -(前缀运算符)
  3. * / %
  4. + -
  5. << >>
  6. < <= > >=
  7. == !=
  8. &&
  9. ||
  10. 三元运算符 ?:

十一、自定义运算符

Swift 允许定义新运算符或重载现有运算符:

swift
复制代码
// 定义幂运算符 infix operator ** : MultiplicationPrecedence func ** (base: Int, power: Int) -> Int { return Int(pow(Double(base), Double(power))) } print(2 ** 3) // 8

关键特性

  • 类型安全:禁止隐式类型转换(如 Int + Double 需显式转换)。
  • 运算符重载:可为自定义类型实现运算符逻辑。
  • 空安全:可选类型需解包后才能参与运算(使用 ?? 或强制解包)。

通过合理使用运算符,可以编写简洁高效的 Swift 代码。

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP