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