一个Optional其实就是一个enum
enum Optional<T> {
case None
case Some(T)
}
比如:
let x:String? = nil
其实就是
let x = Optional<String>.None
而
let x:String? = "Hello"
就是
let x = Optional<String>.Some("Hello")
将x拆包:
var y = x!
等同于:
switch x {
case Some(let value) : y = value
case None : //抛出异常
}