《从零开始学Swift》学习笔记(Day 28)——总结使用问号(?)和感叹号(!)
2015-10-28 11:48
337 查看
原创文章,欢迎转载。转载请注明:关东升的博客
在使用可选类型和可选链时,多次使用了问号(?)和感叹号(!),但是它们的含义是不同的,下面我来详细说明一下。
1. 可选类型中的问号(?)
声明这个类型是可选类型,访问这种类型的变量或常量时要使用感叹号(!),下列代码是显示拆包:
let result1: Double? = divide(100, 200)
print(result1!)
2. 可选类型中的感叹号(!)
声明这个类型也是可选类型,但是访问这种类型的变量或常量时可以不使用感叹号(!),下列代码是隐式拆包:
let result3: Double! = divide(100, 200)
print(result3)
3. 可选链中的感叹号(!)
多个实例具有关联关系,当从一个实例引用另外实例的方法、属性和下标等成员时就会形成引用链,由于这个“链条”某些环节可能有值,也可能没有值,因此需要采用如下方式访问:
emp.dept!.comp!.name
4. 可选链中的问号(?)
在可选链中使用感叹号(!)访问时,一旦“链条”某些环节没有值,程序就会发生异常,我们把感叹号(!)改为问号(?),代码如下所示:
emp.dept?.comp?.name
这样某些环节没有值的时候返回nil,程序不会发生异常。
欢迎关注关东升新浪微博@tony_关东升。
关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息
![](http://images2015.cnblogs.com/blog/490536/201510/490536-20151028114453997-1685787923.png)
更多精品iOS、Cocos、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com
智捷课堂论坛网站:http://51work6.com/forum.php
在使用可选类型和可选链时,多次使用了问号(?)和感叹号(!),但是它们的含义是不同的,下面我来详细说明一下。
1. 可选类型中的问号(?)
声明这个类型是可选类型,访问这种类型的变量或常量时要使用感叹号(!),下列代码是显示拆包:
let result1: Double? = divide(100, 200)
print(result1!)
2. 可选类型中的感叹号(!)
声明这个类型也是可选类型,但是访问这种类型的变量或常量时可以不使用感叹号(!),下列代码是隐式拆包:
let result3: Double! = divide(100, 200)
print(result3)
3. 可选链中的感叹号(!)
多个实例具有关联关系,当从一个实例引用另外实例的方法、属性和下标等成员时就会形成引用链,由于这个“链条”某些环节可能有值,也可能没有值,因此需要采用如下方式访问:
emp.dept!.comp!.name
4. 可选链中的问号(?)
在可选链中使用感叹号(!)访问时,一旦“链条”某些环节没有值,程序就会发生异常,我们把感叹号(!)改为问号(?),代码如下所示:
emp.dept?.comp?.name
这样某些环节没有值的时候返回nil,程序不会发生异常。
欢迎关注关东升新浪微博@tony_关东升。
关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息
![](http://images2015.cnblogs.com/blog/490536/201510/490536-20151028114453997-1685787923.png)
更多精品iOS、Cocos、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com
智捷课堂论坛网站:http://51work6.com/forum.php
相关文章推荐
- swift-通知的基本使用
- Swift自适应布局(Adaptive Layout)教程(一)
- swift-辞典NSDictionary定义,变化的关键,删/加入关键
- 【iOS】Swift LAZY 修饰符和 LAZY 方法
- 【iOS】Swift LAZY 修饰符和 LAZY 方法
- 10.28,python,django中templates的奇偶性,python,swift多语言文件转android多语言文件
- ios学习之swift杂谈
- Swift闭包(Closures)
- iOS Swift+Foundation学习笔记
- swift-UITableView的基本使用
- swift调用支付宝
- OC与Swift混编
- swift算法实践(2)
- swift算法实践(1)
- SwiftSocket 接收服务端byte[] 本地转换
- swift 初级 断言
- Swift函数
- iOS开发~Swift与Cocoapods的使用
- swift中利用闭包进行反向传值
- swift中label内容显示不同的颜色