因为是对学习成果的记录,因为之前我就是做oc开发的,所以就一些其他语言通用的,在这里就不累赘
只写一些不常见的,或者是swift专属的
知识普及:运算符
运算符分为一元、二元和三元运算符:
一元运算符对单一操作对象操作(如 -a)。一元运算符分前置运算符和后置运算符,前置运算符需紧跟在操作对象之前(如 !b),后置运算符需紧跟在操作对象之后(如 c!)。
二元运算符操作两个操作对象(如 2 + 3),是中置的,因为它们出现在两个操作对象之间。
三元运算符操作三个操作对象,和 C 语言一样,Swift 只有一个三元运算符,就是三目运算符(a ? b : c)。
受运算符影响的值叫操作数,在表达式 1 + 2 中,加号 + 是二元运算符,它的两个操作数是值 1 和 2。
赋值运算符(=)、算术运算符(+-*/)、求余运算符(%)、一元负号运算符(-)、一元正号运算符(+)、组合赋值运算符(+= 、-=、 *=、 /=)、比较运算符(== 、!=、>、<、>=、<= 、 ===、 !==)、三元运算符(?:)、逻辑运算符(|| 、&& 、!)暂不做赘述,不明白可以自行百度
知识点1:元组的比较
如果两个元组的元素相同,且长度相同的话,元组就可以被比较。比较元组大小会按照从左到右、逐值比较的方式,直到发现有两个值不等时停止。如果所有的值都相等,那么这一对元组我们就称它们是相等的
(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
("blue", false) < ("purple", true) // 错误,因为 < 不能比较布尔类型注意:
1.含有bool值的元组不能进行比较,int和字符串可以比较
2.Swift 标准库只能比较七个以内元素的元组比较函数。如果你的元组元素超过七个时,你需要自己实现比较运算符
知识点2:空合运算符
空合运算符(a ?? b)将对可选类型 a 进行空判断,如果 a 包含一个值就进行解包,否则就返回一个默认值 b。表达式 a 必须是 Optional 类型。默认值 b 的类型必须要和 a 存储值的类型保持一致。
空合运算符是对以下代码的简短表达方法:
a !=nil? a! : b
上述代码使用了三元运算符。当可选类型 a 的值不为空时,进行强制解封(a!),访问 a 中的值;反之返回默认值 b。无疑空合运算符(??)提供了一种更为优雅的方式去封装条件判断和解封两种行为,显得简洁以及更具可读性。
知识点3:区间运算符
闭区间运算符:a...b 定义一个包含从 a 到 b(包括 a 和 b)的所有值的区间。a 的值不能超过 b
半开区间运算符:a..<b 定义一个从 a 到 b 但不包括 b 的区间。 之所以称为半开区间,是因为该区间包含第一个值而不包括最后的值。
单侧区间:2...或者...2,可以表达往一侧无限延伸的区间
区间运算符的使用场景:
1、在for 循环中使用
for index in1...5 {
print("\(index) * 5 = \(index * 5)")
}// 1 * 5 = 5
// 2 * 5 = 10
// 3 * 5 = 15
// 4 * 5 = 20
// 5 * 5 = 25
2. 作为数组的index使用
let names = ["Anna","Alex","Brian","Jack"]
for name in names[2...] {
print(name)
}// Brian
// Jack