可选值和可选枚举

选项类型,用于处理缺少值。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