1. 程式人生 > >swift 中的 感嘆號 問號 和 雙問號用法詳解

swift 中的 感嘆號 問號 和 雙問號用法詳解

首先介紹一下swift 中的 Optional!
點到 Optional 的標頭檔案可以看到, Optional 其實是個enum,裡面有 case None 和 case Some(Wrapped)兩種型別。其實所謂None 就是 nil, Some 就是 非nil, 是要進行包裝的.這也是使用Optional的時候要拆包(從enum裡取出來原始值)的原因!

一般 ‘?’ 含有 可選,試試,的意思,有可以選擇的餘地, 而 ‘!’ 含有的是 強制 的意思

  1. ‘?’ 的使用

當想要宣告一個 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)