一个Optional其实就是一个enum

enumOptional<T>{caseNonecaseSome(T)}

比如:

letx:String?=nil

其实就是

letx=Optional<String>.None

letx:String?="Hello"

就是

letx=Optional<String>.Some("Hello")

将x拆包:

vary=x!

等同于:

switchx{caseSome(letvalue):y=valuecaseNone://抛出异常}