swift 中的 感嘆號 問號 和 雙問號用法詳解
阿新 • • 發佈:2019-01-25
首先介紹一下swift 中的 Optional!
點到 Optional 的標頭檔案可以看到, Optional 其實是個enum,裡面有 case None 和 case Some(Wrapped)兩種型別。其實所謂None 就是 nil, Some 就是 非nil, 是要進行包裝的.這也是使用Optional的時候要拆包(從enum裡取出來原始值)的原因!
一般 ‘?’ 含有 可選,試試,的意思,有可以選擇的餘地, 而 ‘!’ 含有的是 強制 的意思
- ‘?’ 的使用
當想要宣告一個 Optional 的變數或者常量時,只需要在資料型別後面 加上 ‘?’ 即可
// 名字
var name: String?
宣告為 Optional 的變數預設值是 nil,而常量是沒有預設值的,主要用於在建構函式中給常量設定初始數值
2.Optional 解包
Optional 只有在解包後不為 nil 才可以參與運算.
1) 強制解包
用 ‘!’ 進行解包,即強行解包. 一般只有在保證變數或者常量 有值(不為 nil)的時候才可以進行強行解包.若為 nil,強行解包,會報錯
var a: Int?
let b = 4
print(a! + b)
3.運算子 ??
‘??’ 運算子可以用於判斷 變數/常量 的數值是否是 nil.不為 nil ,則取變數或者常量本身的值,如果是 nil 則使用後面的值替代
var a: Int?
let b = 4
print((a ?? 0) + b)