在實(shí)際開發(fā)過程中,經(jīng)常會(huì)遇到一個(gè)數(shù)據(jù)可能有值,也可能沒有值的情況。針對(duì)這種情況,Swift增加了可選類型(Optional)??蛇x類型可以生命所有的數(shù)據(jù)類型。
可選類型的聲明
在聲明常量或變量時(shí),在類型后面加問號(hào)(?),就表示它是可選的。
(1)可選常量:
let a:Int?
可選常量沒有默認(rèn)值,在使用之前必須設(shè)置初值。

(2)可選變量:
var x:Int?
可選變量如果不給賦初值,它的默認(rèn)值為 nil


注意:Swift中的nil和Objective-C中的nil不一樣。在OC中,nil表示空指針,只能用于對(duì)象類型,在Swift中,沒有指針的概念,nil的含義是一個(gè)值,表示值的缺失,可用于任何類型。
解包
可選類型不能直接參與計(jì)算,參與計(jì)算時(shí)需要進(jìn)行解包。解包的方法是在可選項(xiàng)后加感嘆號(hào)(!)。
let x:Int? = 10
print(x! + 2)
在解包前,可選項(xiàng)必須有值


隱式解析
可選類型每次解包很麻煩,可以采用隱式解析的方法,在聲明時(shí)將數(shù)據(jù)類型后的問號(hào)改成嘆號(hào)。
let x:Int! = 10
var y:Int!= 20
如果變量的值可能為nil,不要用隱式解析的方法

空合并運(yùn)算符
可選類型如果為空是不能參與運(yùn)算的,所以在使用之前要對(duì)其進(jìn)行判斷,空合并運(yùn)算符可以簡(jiǎn)化運(yùn)算:


空合并運(yùn)算符相當(dāng)于算目運(yùn)算符:a! = nil ? a! : b??蘸喜⑦\(yùn)算符更加簡(jiǎn)潔,可讀性增強(qiáng)。
使用空合并運(yùn)算符需要注意,必須符合以下兩個(gè)條件:
- 表達(dá)式 a 必須是可選類型
- 默認(rèn)值b的數(shù)據(jù)類型必須與 a 的值 數(shù)據(jù)類型一致
OK,這就是可選類型的聲明和基本用法,明天分享控制流。