原创文章,欢迎转载。转载请注明:关东升的博客 php
在使用可选类型和可选链时,屡次使用了问号(?)和感叹号(!),可是它们的含义是不一样的,下面我来详细说明一下。 微信
1. 可选类型中的问号(?)ide
声明这个类型是可选类型,访问这种类型的变量或常量时要使用感叹号(!),下列代码是显示拆包: 网站
let result1: Double? = divide(100, 200) spa
print(result1!) .net
2. 可选类型中的感叹号(!)设计
声明这个类型也是可选类型,可是访问这种类型的变量或常量时能够不使用感叹号(!),下列代码是隐式拆包:教程
let result3: Double! = divide(100, 200) get
print(result3) 博客
3. 可选链中的感叹号(!)
多个实例具备关联关系,当从一个实例引用另外实例的方法、属性和下标等成员时就会造成引用链,因为这个“链条”某些环节可能有值,也可能没有值,所以须要采用以下方式访问:
emp.dept!.comp!.name
4. 可选链中的问号(?)
在可选链中使用感叹号(!)访问时,一旦“链条”某些环节没有值,程序就会发生异常,咱们把感叹号(!)改成问号(?),代码以下所示:
emp.dept?.comp?.name
这样某些环节没有值的时候返回nil,程序不会发生异常。
欢迎关注关东升新浪微博@tony_ 关东升。
关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息
更多精品iOS、Cocos、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com
智捷课堂论坛网站:http://51work6.com/forum.php