可選值和可選列舉
選項型別,用於處理缺少值。Optionals 說“有一個值,它等於 x”或根本沒有值。
一個 Optional 本身就是一種型別,實際上是 Swift 新推出的超級動力列舉之一。它有兩個可能的值,None
和 Some(T)
,其中 T 是 Swift 中可用的正確資料型別的關聯值。
我們來看看這段程式碼,例如:
let x: String? = "Hello World"
if let y = x {
print(y)
}
事實上,如果你在上面的程式碼中新增 print(x.dynamicType)
語句,你將在控制檯中看到:
Optional<String>
字串?實際上是 Optional 的語法糖,而 Optional 本身就是一種型別。
這是 Optional 的標題的簡化版本,你可以通過命令單擊 Xcode 程式碼中的 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
是一種型別的事實意味著它有自己的方法,例如 map
和 flatMap
。