1.一元、二元、三元运算符
|----|--------|-----------|
| 一元 | 单一操作对象 | -a !b c! |
| 二元 | 两个操作对象 | 2 + 3 |
| 三元 | 三目运算符 | a ? b : c |
2.赋值运算符(=)
let a = 10
var b = 5
b = a
let (x, y) = (1, 2)
赋值运算符不返回任何值,所以 if x = y { ... } 无效。
3.算术运算符
-
- * /
默认不允许数值运算中溢出。
溢出运算符: a &+ b
4.求余运算符
a % b = 余数
a = (b * 倍数) + 余数
所以a % b = a % -b
5.组合赋值运算
var a = 1
a += 2 //a = a + 2
6.比较运算符
== != > < >= <=
===恒等 !==不恒等 用于判断两个对象是否引用自同一对象实例
返回布尔值。
元组比较:两元组的元素类型与长度都相等的元组即可比较。从左向右比较,如果前面的元素比较成功则不会再往后比较。
(1, "a") < (2, "b")
(3, "a") < (3, "b")
(4, "d") == (4, "d")
7.空合运算符(??)
a ?? b //相当于 a != nil ? a! : b
//a为option类型,b与a的存储值类型一致。a非空时对a进行强制解析,a为空时返回b。
//短路求值:a非空时不会再计算b
8.闭区间运算符
a ... b //a到b间所有的值。a<=b
1 ... 5 //1, 2, 3, 4, 5
9.半开区间运算符
a ..< b //适用于数组遍历, 0 ..< 数组长度
1 ..< 5 //1, 2, 3, 4
10.单侧区间
往一侧延申的区间
[ 2... ]
[ ...2 ]
11.半开单侧区间
[ ..<2 ]
12.逻辑运算符
|----------|---|------------|----------------------|------------------|
| !a | 非 | 相反 | | |
| a && b | 与 | 全true为true | 短路计算(a为false时不会再计算b) | 左结合(没有括号时从左往右计算) |
| a || b | 或 | 一true为true | 短路计算(a为true时不会再计算b) | 左结合 |