Swift 关键字
inout
将值类型的对象按照应用类型传递,以按址传递的方式进行操作。1
2
3
4
5
6var x = 10
func test(a: inout Int) {
a += 1
print(a)
}
test(a: &x) //注意,取地址。 输出 11
除了 Int类型,诸如:CGFloat,Bool,Character,Array,struct等,这些值类型的对象都可以使用inout修饰,达到使用引用的方式传递的目的。
defer
修饰一段函数内任一段代码,使其必须在函数中的其余代码都执行完毕,函数即将结束前调用。也可以理解成将延迟执行。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17func testDefer() {
print("start")
defer{
print("执行defer1")
}
print("函数结束")
defer{
print("执行defer2")
}
print("end")
}
testDefer()
//start
//函数结束
//end
//执行defer2
//执行defer1
throws
Swift中提供了Error协议,我们在开发中,如果要自定义自己的错误类型,一般会使用一个Enum来继承Error协议,目的是享用Error已经包含的一些特性。
1 | enum MyError: Error { |