在實際開發過程中,經常會遇到一個數據可能有值,也可能沒有值的情況。針對這種情況,Swift增加了可選類型(Optional)。可選類型可以生命所有的數據類型。
可選類型的聲明
在聲明常量或變量時,在類型后面加問號(?),就表示它是可選的。
(1)可選常量:
let a:Int?
可選常量沒有默認值,在使用之前必須設置初值。
可選常量必須設置初值
(2)可選變量:
var x:Int?
可選變量如果不給賦初值,它的默認值為 nil
可選變量默認為nil
可選變量賦初值的打印結果
注意:Swift中的nil和Objective-C中的nil不一樣。在OC中,nil表示空指針,只能用于對象類型,在Swift中,沒有指針的概念,nil的含義是一個值,表示值的缺失,可用于任何類型。
解包
可選類型不能直接參與計算,參與計算時需要進行解包。解包的方法是在可選項后加感嘆號(!)。
let x:Int? = 10
print(x! + 2)
在解包前,可選項必須有值
可選項沒有值進行計算會報錯
隱式解析
可選類型每次解包很麻煩,可以采用隱式解析的方法,在聲明時將數據類型后的問號改成嘆號。
let x:Int! = 10
var y:Int!= 20
如果變量的值可能為nil,不要用隱式解析的方法
空合并運算符
可選類型如果為空是不能參與運算的,所以在使用之前要對其進行判斷,空合并運算符可以簡化運算:
空合并運算符相當于算目運算符:a! = nil ? a! : b。空合并運算符更加簡潔,可讀性增強。
使用空合并運算符需要注意,必須符合以下兩個條件:
- 表達式 a 必須是可選類型
- 默認值b的數據類型必須與 a 的值 數據類型一致
OK,這就是可選類型的聲明和基本用法,明天分享控制流。