如题所述
第1个回答 2022-08-03
Swift 提供了一组对于 C 或者 Objective-C 开发者来说十分熟悉的运算符,并且补充了一些新的(特别需要注意的是,区间运算符和空值合并(nil coalescing)运算符):
如下面这些运算符
Swfit 是可以重载运算符的,其能够让现有的运算符像 + 在其它的类型中起作用。
为了重载一个运算符,需要为运算符号简单的定义一个新的函数,并且要有适当的参数个数。
例如,重载 * 来让一个字符串重复某个特定的次数:
然而,这是一个有争议的语言特性。
如下语句:
两个数组相加,想得到 [1, 2, 3, 4] ,但重载以后:
得到的是 [4.0, 6.0]
运算符重载的问题会造成:语意不清。在使用时,要注意具体应用,并避免重载。
如果需要重载运算符要考虑多种情况,避免出现不可预见的 bug .
自定义运算符,一般可以分三步
需要注意的是, Swift 的操作符必须是全局部的,用 static 修饰。这就可能与其他 module 定义的操作符有冲突,这点需要特别注意。自定义操作符应该尽量避免重载,应简尽简,切禁写的太复杂,命名尽量规范,避免误解。