- Swift 教程
- Swift - 首页
- Swift - 概述
- Swift - 环境
- Swift - 基本语法
- Swift - 变量
- Swift - 常量
- Swift - 字面量
- Swift - 注释
- Swift 运算符
- Swift - 运算符
- Swift - 算术运算符
- Swift - 比较运算符
- Swift - 逻辑运算符
- Swift - 赋值运算符
- Swift - 位运算符
- Swift - 其他运算符
- Swift 高级运算符
- Swift - 运算符重载
- Swift - 算术溢出运算符
- Swift - 同一性运算符
- Swift - 范围运算符
- Swift 数据类型
- Swift - 数据类型
- Swift - 整数
- Swift - 浮点数
- Swift - Double
- Swift - 布尔值
- Swift - 字符串
- Swift - 字符
- Swift - 类型别名
- Swift - 可选值
- Swift - 元组
- Swift - 断言和前提条件
- Swift 控制流
- Swift - 决策
- Swift - if 语句
- Swift - if...else if...else 语句
- Swift - if-else 语句
- Swift - 嵌套 if 语句
- Swift - switch 语句
- Swift - 循环
- Swift - for in 循环
- Swift - while 循环
- Swift - repeat...while 循环
- Swift - continue 语句
- Swift - break 语句
- Swift - fall through 语句
- Swift 集合
- Swift - 数组
- Swift - 集合
- Swift - 字典
- Swift 函数
- Swift - 函数
- Swift - 嵌套函数
- Swift - 函数重载
- Swift - 递归
- Swift - 高阶函数
- Swift 闭包
- Swift - 闭包
- Swift - 转义和非转义闭包
- Swift - 自动闭包
- Swift 面向对象编程
- Swift - 枚举
- Swift - 结构体
- Swift - 类
- Swift - 属性
- Swift - 方法
- Swift - 下标
- Swift - 继承
- Swift - 重写
- Swift - 初始化
- Swift - 析构
- Swift 高级特性
- Swift - ARC 概述
- Swift - 可选链
- Swift - 错误处理
- Swift - 并发
- Swift - 类型转换
- Swift - 嵌套类型
- Swift - 扩展
- Swift - 协议
- Swift - 泛型
- Swift - 访问控制
- Swift - 函数与方法
- Swift - SwiftyJSON
- Swift - 单例类
- Swift 随机数
- Swift 不透明类型和装箱类型
- Swift 有用资源
- Swift - 在线编译
- Swift - 快速指南
- Swift - 有用资源
- Swift - 讨论
Swift - 运算符重载
Swift 中的运算符重载
运算符重载是 Swift 编程中的一项强大技术。运算符重载允许我们使用自定义代码更改现有运算符(如 +、-、/、*、% 等)的工作方式。
它使代码更具表现力和可读性。要重载运算符,我们必须使用“static func”关键字定义该运算符的行为。
语法
以下是运算符重载的语法:
static func operatorName() { // body }
示例 1
Swift 程序,重载 + 运算符以计算两个复数的和。
import Foundation struct ComplexNumber { var real: Double var imag: Double // Overloading + operator to add two complex numbers static func+(left: ComplexNumber, right: ComplexNumber) -> ComplexNumber { return ComplexNumber(real: left.real + right.real, imag: left.imag + right.imag) } } let complexNumber1 = ComplexNumber(real: 2.1, imag: 2.0) let complexNumber2 = ComplexNumber(real: 6.1, imag: 9.0) // Calling + operator to add two complex numbers let sumOfComplexNumbers = complexNumber1 + complexNumber2 print(sumOfComplexNumbers)
输出
ComplexNumber(real: 8.2, imag: 11.0)
示例 2
Swift 程序,重载自定义前缀运算符。
import Foundation struct Car { var price: Double // Overloading the custom prefix operator "++" to increase the price of car static prefix func ++ (carPrice: inout Car) { carPrice.price += 500000.0 } } var currentPrice = Car(price: 2500000.0) // Calling the custom ++ operator to increase the car price ++currentPrice print("Updated car price is", currentPrice.price)
输出
Updated car price is 2500000.0
Swift 中运算符重载的限制
以下是运算符重载的限制:
- 在 Swift 中,您可以重载有限的运算符,例如算术运算符和自定义运算符。
- 重载运算符时,不允许更改运算符的优先级或结合性。
- Swift 不支持重载逻辑运算符的短路行为。
- 不要过度使用运算符重载,因为它会使您的代码难以阅读和理解。
运算符函数和普通函数的区别
以下是运算符函数和普通函数的主要区别:
运算符函数 | 普通函数 |
---|---|
它们使用“static func”关键字和自定义运算符符号定义。 | 它们使用“func”关键字和函数名定义。 |
它们用于自定义运算符的行为。 | 它们用于完成通用任务。 |
当与自定义类型一起使用运算符时,它们被隐式调用。 | 它们通过函数名显式调用。 |
它们可以定义为索引、前缀或后缀形式。 | 它们只能定义为中缀形式。 |
广告