可选类型、隐式可选类型
在swift中,可选类型其根源是一个枚举型,里面有None和Some两种类型。其实所谓的nil就是Optional.None,非nil就是Optional.Some,然后会通过Some(T)包装(wrap)原始值,这也是为什么在使用Optional的时候要拆包(从enum里取出来原始值)的原因,也是PlayGround会把Optional值显示为类似{Some "hello world"}的原因,这里是enum Optional的定义:
- enumOptional<T>:LogicValue,Reflectable{
- caseNone
- caseSome(T)
- init()
- init(_some:T)
- ///AllowuseinaBooleancontext.
- funcgetLogicValue()->Bool
- ///Haskell'sfmap,whichwasmis-named
- funcmap<U>(f:(T)->U)->U?
- funcgetMirror()->Mirror
- }
语法使用“?”操作符及"!"号操作符
如:“var optionalString: String? ="Hello"
optionalString == nil
var optionalName: String? = "John Appleseed"
var greeting = "Hello!"
if let name = optionalName {
greeting = "Hello,\(name)"
}”
大家把optionalName改为nil时看一下会有什么结果?按照理解,应该是? = 后的为可选值,即当我们的的变量为nil时,这里如果有?=操作,则会使用?=后的值作为默认值,而不会为nil. 这个等有环境时,验证一下。
经验证:
分别执行: