《从零开始学Swift》学习笔记(Day 28)——总结使用问号(?)和感叹号(!)

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

 

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

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、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com
智捷课堂论坛网站:http://51work6.com/forum.php

 

 


http://www.niftyadmin.cn/n/1036470.html

相关文章

一篇文章看懂《qsort》快排的用法

一篇文章看懂《qsort》快排的用法前言一、库函数(qsort)的含义二、(qsort)函数的实现方式,话不多说,请看。1. 第一个参数2. 第二个参数3. 第三个参数4. 第四个参数1). 函数的参数2). 这第四个参数的重点三、…

《从零开始学Swift》学习笔记(Day 29)——访问级别

原创文章,欢迎转载。转载请注明:关东升的博客访问级别:Swift提供了3种不同访问级别,对应的访问修饰符为:public、internal和private。这些访问修饰符可以修饰类、结构体、枚举等面向对象的类型,还可以修饰变…

库函数《qsort》的模拟实现,原来如此简单

库函数《qsort》的模拟实现前言一、qsort函数二、qsort函数实现思路1. 底层原理2. 函数传参1). 第一个参数2). 第二个参数3). 第三个参数4). 第四个参数三、局部函数实现四、全部代码汇集五、总结前言 我们在上一篇博客讲解了库函数qsort的使用,今天我为大家带来qs…

《从零开始学Swift》学习笔记(Day 30)——选择类还是结构体呢?

原创文章,欢迎转载。转载请注明:关东升的博客类和结构体非常相似,很多情况下没有区别。如果你是设计人员在进行系统设计时候,是将某种类型设计成为类还是结构体? 类和结构体异同:类和结构体都有如下功能&am…

一题做懂“子网划分”

子网划分详解一、 子网划分的作用二、 常见的几种名词概念1. DNS域名服务器2. 子网掩码3. 默认网关4. 广播地址(号)与网络地址(号)三、子网划分之借位一、 子网划分的作用 子网划分的作用: 1、将ABC三个类别的地址在利…

《从零开始学Swift》学习笔记(Day 31)——存储属性

原创文章,欢迎转载。转载请注明:关东升的博客 Swift中的属性分为存储属性和计算属性,存储属性就是Objective-C中的数据成员,计算属性不存储数据,但可以通过计算其他属性返回数据。存储属性可以存储数据,分…

异或运算详解与练习

目录一、异或运算讲解按位异或 / 同或二、练习题计算数组中出现奇数次的数值二进制中1的个数一、异或运算讲解 按位异或 / 同或 int main() {//按二进制位展开//按位异或: 相同为0,不同为1//按位同或: 相同为1,不同为0int a 10; //二进制: 0000 1010…

【C语言】指针总结,值得收藏哦

C语言指针一览表 文章目录C语言指针一览表一、指针的概念1、内存与地址2、一级(二级)指针的概念二、野指针的概念1、概念2、成因3、如何规避上诉问题?三、六大基本指针类型1、char*2、short*3、int*4、long*5、float*6、double*四、指针运算1…