在实际开发过程中,经常会遇到一个数据可能有值,也可能没有值的情况。针对这种情况,Swift增加了可选类型(Optional)。可选类型可以生命所有的数据类型。
可选类型的声明
在声明常量或变量时,在类型后面加问号(?),就表示它是可选的。
(1)可选常量:
let a:Int?
可选常量没有默认值,在使用之前必须设置初值。
![](https://img.haomeiwen.com/i2188748/62bb5ccc6fca1c33.png)
(2)可选变量:
var x:Int?
可选变量如果不给赋初值,它的默认值为 nil
![](https://img.haomeiwen.com/i2188748/01c7282f42a64e05.png)
![](https://img.haomeiwen.com/i2188748/be1cbee71f321ca8.png)
注意:Swift中的nil和Objective-C中的nil不一样。在OC中,nil表示空指针,只能用于对象类型,在Swift中,没有指针的概念,nil的含义是一个值,表示值的缺失,可用于任何类型。
解包
可选类型不能直接参与计算,参与计算时需要进行解包。解包的方法是在可选项后加感叹号(!)。
let x:Int? = 10
print(x! + 2)
在解包前,可选项必须有值
![](https://img.haomeiwen.com/i2188748/a602d990dabde221.png)
![](https://img.haomeiwen.com/i2188748/a46614dbafb3858f.png)
隐式解析
可选类型每次解包很麻烦,可以采用隐式解析的方法,在声明时将数据类型后的问号改成叹号。
let x:Int! = 10
var y:Int!= 20
如果变量的值可能为nil,不要用隐式解析的方法
![](https://img.haomeiwen.com/i2188748/09ae678b95943e38.png)
空合并运算符
可选类型如果为空是不能参与运算的,所以在使用之前要对其进行判断,空合并运算符可以简化运算:
![](https://img.haomeiwen.com/i2188748/6ddb8593d3849104.png)
![](https://img.haomeiwen.com/i2188748/b001b692089e0649.png)
空合并运算符相当于算目运算符:a! = nil ? a! : b。空合并运算符更加简洁,可读性增强。
使用空合并运算符需要注意,必须符合以下两个条件:
- 表达式 a 必须是可选类型
- 默认值b的数据类型必须与 a 的值 数据类型一致
OK,这就是可选类型的声明和基本用法,明天分享控制流。
网友评论