【发布时间】:2017-07-24 15:33:07
【问题描述】:
? 和! 解开可选值有什么区别
如果有类名A并且有属性名proA
如果我做一个这样的实例
var a:A? = A()
a?.proA
a!.proA
我可以通过上述两种方式处理属性“proA”。我知道如果我使用a.proA 将无法获得价值,因为a 是可选类型。
另外,我知道a!.proA 可以获得价值,因为它可以有效地展开价值
a?.proA 是什么?
a?.proA和a!.proA有什么区别
【问题讨论】:
-
a?正在调用 proA,因此a可能为零,这里我们通过?通知编译器a。如果编译器将得到 nil,它会静默运行而不会崩溃