现在暂时对于Optional有了一定的了解,但是突然发现还有这样定义的:
var literalNil: String?? = nil
两个问号是什么鬼?这个其实就是多重Optional。
1.概念
多重Optional,故名思义,就是使用用多个Optional,具体可以这么理解。可以把每个Optional看作是一个盒子(王巍这么写的,我不知道是不是他首创,但是我觉得盒子这个比喻很妙),那么每个Optional里边可以装的东西就有三类:
a.什么都没有(nil)
b.物品(各种变量)
c.另一个盒子(Optional)
那么理解多重Optional,也就简单多了,就是盒子套了另一个盒子。
2.一些实验
为了学习多重Optional,在自己的playground里边写了一些判断实验。
在这里提一下,“!”的作用:你可以在可选的名字后面加一个感叹号(!)来获取值。这个惊叹号表示“我知道这个可选有值,请使用它,即可选值的强制解析(forced unwrapping)。在多重Optional里边,可以理解成用“!”来拆盒子。
(1)当给Optional赋值为nil
var aNil: String? = nil
var anotherNil: String?? = aNil //真正的多重Optional