组合赋值运算符
Swift
let a = 10;
let b = a += 10; //报错
Objective-C
NSInteger a = 10;
NSInteger b = a += 10;
NSLog(@"%d", b); //20
Swift中复合赋值运算没有返回值。
元组比较大小
(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
空合运算符(Nil Coalescing Operator)
空合运算符:(a ?? b) 将对可选类型 a 进行空判断,如果 a 包含一个值就进行解封,否则就返回一个默认值 b。
let defaultColorName = "red"
var userDefinedColorName: String? //默认值为 nil
var colorNameToUse = userDefinedColorName ?? defaultColorName
// userDefinedColorName 的值为空,所以 colorNameToUse 的值为 "red"
区间运算符
闭区间运算符
闭区间运算符: (a…b), a到b, 包含a和b。 a不能超过b。
半开区间运算符
半开区间运算符(a...<b), a到b, 但不包括b的区间。
let names = ["Anna", "Alex", "Brian", "Jack"]
let count = names.count
for i in 0..<count {
print("第 \(i + 1) 个人叫 \(names[i])")
}
溢出运算符
在默认情况下,当向一个整数赋予超过它的容量值时,Swift默认会报错,而不是生成一个无效的数。
var potentialOverflow = Int16.max
// potentialOverflow 的值是 32767,这是 Int16 能容纳的最大整数
potentialOverflow += 1
- 溢出加 &+
- 溢出减 &-
- 溢出乘 &*
demo1: &+
var unsignedOverflow = UInt8.max
// unsignedOverflow 等于 UInt8 所能容纳的最大整数 255
unsignedOverflow = unsignedOverflow &+ 1
// 此时 unsignedOverflow 等于 0
demo2: &-
var unsignedOverflow = UInt8.min
// unsignedOverflow 等于 UInt8 所能容纳的最小整数 0
unsignedOverflow = unsignedOverflow &- 1
// 此时 unsignedOverflow 等于 255
demo3: 有符号,符号位参与运算
var signedOverflow = Int8.min
// signedOverflow 等于 Int8 所能容纳的最小整数 -128
signedOverflow = signedOverflow &- 1
// 此时 signedOverflow 等于 127