博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《从零开始学Swift》学习笔记(Day 28)——总结使用问号(?)和感叹号(!)
阅读量:6348 次
发布时间:2019-06-22

本文共 657 字,大约阅读时间需要 2 分钟。

原创文章,欢迎转载。转载请注明:关东升的博客 

在使用可选类型和可选链时,多次使用了问号(?)和感叹号(!),但是它们的含义是不同的,下面我来详细说明一下。 

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_关东升。

关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息
 
更多精品iOSCocos、移动设计课程请关注智捷课堂官方网站:
智捷课堂论坛网站:

 

 

你可能感兴趣的文章
运用Merge Into实现增加或更新数据
查看>>
Python——eventlet.greenthread
查看>>
使用sphinx创建和查看文档
查看>>
记大众点评之面试经历
查看>>
ABAP中查找代码的标准程序
查看>>
第七次作业
查看>>
第三章:基本概念
查看>>
Jersey+mybatis实现web项目第一篇
查看>>
C++形参中const char * 与 char * 的区别
查看>>
espresso 2.0.4 Apple Xcode 4.4.1 coteditor 价格
查看>>
Object-C中emoji与json的问题
查看>>
一、Lambda表达式
查看>>
linux 命令
查看>>
大二下周总结四
查看>>
转 常见视频编码方式以及封装格式
查看>>
灾后重建
查看>>
Nothing 和 Is
查看>>
第一个sprint冲刺第三天
查看>>
【As Easy As A+B - 专题训练-排序】
查看>>
cocos creator 底部按钮touch延迟
查看>>