由于其他语言中也有一样的运算符,我把需要注意的和不太一样的列了出来,其他相同的就不再赘述。
1. 求余运算符
例子:
9 % 4 // 等于 1
-9 % 4 // 等于 -1
在对负数 b 求余时,b 的符号会被忽略。这意味着 a % b 和 a % -b 的结果是相同的。
2. 组合赋值运算符
复合赋值运算没有返回值,let b = a += 2这类代码是错误。这不同于上面提到的自增和自减运算符。
3. 比较运算符(Comparison Operators)
(1)所有标准 C 语言中的比较运算符都可以在 Swift 中使用。Swift 也提供恒等(===)和不恒等(!==)这两个比较符来判断两个对象是否引用同一个对象实例。
(2)Bool 不能被比较。
(3)当元组中的值可以比较时,也可以使用这些运算符来比较它们的大小。比较元组大小会按照从左到右、逐值比较的方式,直到发现有两个值不等时停止。如果所有的值都相等,那么这一对元组我们就称它们是相等的。
(1, "zebra") < (2, "apple") // true,因为 1 小于 2,不相等停止比较。
(3, "apple") < (3, "bird") // true,因为 3 等于 3,继续比较, 比较apple 小于 bird
(4, "dog") == (4, "dog") // true,因为 4 等于 4,dog 等于 dog
Swift 标准库只能比较七个以内元素的元组比较函数。如果你的元组元素超过七个时,你需要自己实现比较运算符。
4. 空合运算符(Nil Coalescing Operator)
空合运算符(a ?? b)将对可选类型 a 进行空判断,如果 a 包含一个值就进行解封,否则就返回一个默认值 b。表达式 a 必须是 Optional 类型。默认值 b 的类型必须要和 a 存储值的类型保持一致。
let defaultColorName = "red"
var userDefinedColorName: String? //默认值为 nil
var colorNameToUse = userDefinedColorName ?? defaultColorName
//由于 userDefinedColorName 是一个可选类型,我们可以使用空合运算符去判断其值。
// userDefinedColorName 的值为空,赋defaultColorName的值,所以 colorNameToUse 的值为 "red"
userDefinedColorName = "green"
colorNameToUse = userDefinedColorName ?? defaultColorName
// userDefinedColorName 非空,因此 colorNameToUse 的值为 "green"
5. 区间运算符(Range Operators)
(一)闭区间运算符:a…b
定义一个包含从 a 到 b(包括 a 和 b)的所有值的区间。
(二)半开区间运算符:a..< b
定义一个从 a 到 b 但不包括 b 的区间。
实用性:与从0开始的列表(如数组)相吻合。
6. 逻辑运算符组合计算
Swift 逻辑操作符 && 和 || 是左结合的,这意味着拥有多元逻辑操作符的复合表达式优先计算最左边的子表达式。