额发现还是要写很多章,因为内容太多导致快速笔记也很多…
2 基本运算符
除了在不同语言中通用的运算符代表的功能,swift还对运算符进行了改进,例如使用运算符后的结果会被自动检测并禁止溢出,以此来避免保存变量时由于变量大于或小于其类型所能承载的范围时导致的异常结果。当然,swift允许溢出运算符实现溢出。
swift还提供区间运算符,例如 a..<b
或 a...b
。
本章节只描述基础运算功能实现,高级运算符、自定义运算符、自定义类型的运算符重载等有专门章节说明。
2.1 术语
- 一元运算符:操作对象为一个,例如
-a
- 二元运算符:操作对象为两个,例如
a + b
- 三元运算符:操作对象为三个,例如
a ? b : c
2.2 算术运算符
-
赋值:=
-
加法:+
-
减法:-
-
乘法:*
-
除法:/
-
求余:%
-
复合运算:+= -= 等等
-
等于:==
-
大于:>
-
小于:<
-
不等于:!=
-
大于等于:>=
-
小于等于:<=
-
三元运算符:a ? b : c // a是表达式,表达式true则b,false则c
-
空合运算符:a ?? b
a为可选类型,如果a含值则返回a含的值,如果不含值则返回b,b的数据类型和a含值类型一样swift">let defaultColorName = "red" var userDefinedColorName: String? //默认值为 nil var colorNameToUse = userDefinedColorName ?? defaultColorName // userDefinedColorName 的值为空,所以 colorNameToUse 的值为 "red" userDefinedColorName = "green" colorNameToUse = userDefinedColorName ?? defaultColorName // userDefinedColorName 非空,因此 colorNameToUse 的值为 "green"
-
区间运算符:a … b
swift">for index in 1...5 { print("\(index) * 5 = \(index * 5)") } // 1 * 5 = 5 // 2 * 5 = 10 // 3 * 5 = 15 // 4 * 5 = 20 // 5 * 5 = 25
-
半开区间运算符
swift">let names = ["Anna", "Alex", "Brian", "Jack"] let count = names.count for i in 0..<count { print("第 \(i + 1) 个人叫 \(names[i])") } // 第 1 个人叫 Anna // 第 2 个人叫 Alex // 第 3 个人叫 Brian // 第 4 个人叫 Jack
-
单侧区间
swift">for name in names[2...] { print(name) } // Brian // Jack for name in names[...2] { print(name) } // Anna // Alex // Brian for name in names[..<2] { print(name) } // Anna // Alex
-
swift中运算符的使用类似python中的运算符使用,字符串可以
+
-
元祖拆解方式也类似
-
负数前面直接添加
-
号即可 -
元组长度相同、元素相同才可以比较,且是逐值比较的,直到发现有两个值不等时停止,例如:
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
Swift 标准库只能比较七个以内元素的元组比较函数
2.3 逻辑运算符
- 逻辑非:!
- 逻辑或:||
- 逻辑与:&&
swift 逻辑操作符是左结合,意味着多元逻辑运算复合表达式中,计算顺序从左到右;此外也可以使用括号来划定优先级
本节完。