可選值和可選列舉

選項型別,用於處理缺少值。Optionals 說“有一個值,它等於 x”或根本沒有值

一個 Optional 本身就是一種型別,實際上是 Swift 新推出的超級動力列舉之一。它有兩個可能的值,NoneSome(T),其中 T 是 Swift 中可用的正確資料型別的關聯值。

我們來看看這段程式碼,例如:

let x: String? = "Hello World"

if let y = x {
   print(y)
}

事實上,如果你在上面的程式碼中新增 print(x.dynamicType) 語句,你將在控制檯中看到:

Optional<String>

字串?實際上是 Optional 的語法糖,而 Optional 本身就是一種型別。

這是 Optional 的標題的簡化版本,你可以通過命令單擊 Xco​​de 程式碼中的 Optional 來檢視:

enum Optional<Wrapped> {

 /// The absence of a value.
 case none

 /// The presence of a value, stored as `Wrapped`.
 case some(Wrapped)
}

可選實際上是列舉,與通用型別 Wrapped 相關定義。它有兩種情況: .none 表示沒有值, .some 表示值的存在,該值儲存為 Wrapped 型別的關聯值。

讓我再說一遍:String? 不是 String 而是 Optional<String>Optional 是一種型別的事實意味著它有自己的方法,例如 mapflatMap