《从零开始学Swift》学习笔记(Day 26)——可选链
来源:互联网 发布:大华行知实验幼儿园 编辑:程序博客网 时间:2024/06/06 00:13
在Swift程序表达式中会看到问号(?)和感叹号(!),它们代表什么含义呢?这些符号都与可选类型和可选链相关,下面来看看可选链。
可选链:
类图:
它们之间是典型的关联关系类图。这些类一般都是实体类,实体类是系统中的人、事、物。Employee通过dept属性与Department关联,Department通过comp属性与Company关联。
下面看示例代码:
class Employee {
var no: Int = 0
var name: String = "Tony"
var job: String?
var salary: Double = 0
var dept: Department = Department()
}
class Department {
var no: Int = 10
var name: String = "SALES"
var comp: Company = Company()
}
class Company {
var no: Int = 1000
var name: String = "EOrient"
}
let emp = Employee() //Employee实例
print(emp.dept.comp.name) //
emp.dept.comp.name可以引用到Company实例,形成一个引用的链条,但是这个“链条”任何一个环节“断裂”都无法引用到最后的目标(Company实例)。
给定一个Employee实例,一定会有一个Department与其关联。但现实是一个新入职员工未必有部门,这种关联关系有可能有值,也有可能没有值,我们需要使用可选类型(Department?)声明dept属性。
修改代码如下:
class Employee {
var no: Int = 0
var name: String = "Tony"
var job: String?
var salary: Double = 0
var dept: Department? // = Department()
}
class Department {
var no: Int = 10
var name: String = "SALES"
var comp: Company? // = Company()
}
class Company {
var no: Int = 1000
var name: String = "EOrient"
}
let emp = Employee()
print(emp.dept!.comp!.name) //显示拆包
print(emp.dept?.comp?.name) //可选链
其中可选类型的引用,可以使用感叹号(!)进行显示拆包,代码修改如下:
print(emp.dept!.comp!.name)
但是显示拆包有一个弊端,如果可选链中某个环节为nil,将会导致代码运行时错误。我们可以采用更加“温柔”的引用方式,使用问号(?)来代替原来感叹号(!)的位置,如下所示:
print(emp.dept?.comp?.name)
可选链:
类图:
它们之间是典型的关联关系类图。这些类一般都是实体类,实体类是系统中的人、事、物。Employee通过dept属性与Department关联,Department通过comp属性与Company关联。
下面看示例代码:
class Employee {
var no: Int = 0
var name: String = "Tony"
var job: String?
var salary: Double = 0
var dept: Department = Department()
}
class Department {
var no: Int = 10
var name: String = "SALES"
var comp: Company = Company()
}
class Company {
var no: Int = 1000
var name: String = "EOrient"
}
let emp = Employee() //Employee实例
print(emp.dept.comp.name) //
emp.dept.comp.name可以引用到Company实例,形成一个引用的链条,但是这个“链条”任何一个环节“断裂”都无法引用到最后的目标(Company实例)。
给定一个Employee实例,一定会有一个Department与其关联。但现实是一个新入职员工未必有部门,这种关联关系有可能有值,也有可能没有值,我们需要使用可选类型(Department?)声明dept属性。
修改代码如下:
class Employee {
var no: Int = 0
var name: String = "Tony"
var job: String?
var salary: Double = 0
var dept: Department? // = Department()
}
class Department {
var no: Int = 10
var name: String = "SALES"
var comp: Company? // = Company()
}
class Company {
var no: Int = 1000
var name: String = "EOrient"
}
let emp = Employee()
print(emp.dept!.comp!.name) //显示拆包
print(emp.dept?.comp?.name) //可选链
其中可选类型的引用,可以使用感叹号(!)进行显示拆包,代码修改如下:
print(emp.dept!.comp!.name)
但是显示拆包有一个弊端,如果可选链中某个环节为nil,将会导致代码运行时错误。我们可以采用更加“温柔”的引用方式,使用问号(?)来代替原来感叹号(!)的位置,如下所示:
print(emp.dept?.comp?.name)
0 0
- 《从零开始学Swift》学习笔记(Day 26)——可选链
- 《从零开始学Swift》学习笔记(Day 26)——可选链
- 《从零开始学Swift》学习笔记(Day 27)——可选类型
- 《从零开始学Swift》学习笔记(Day 27)——可选类型
- 《从零开始学Swift》学习笔记(Day 1)——我的第一行Swift代码
- 《从零开始学Swift》学习笔记(Day 2)——使用Web网站编写Swift代码
- 《从零开始学Swift》学习笔记(Day 3)——Swift 2.0之后增加的关键字
- 《从零开始学Swift》学习笔记(Day 17)——Swift中数组集合
- 《从零开始学Swift》学习笔记(Day 56)—— Swift编码规范之命名规范
- 《从零开始学Swift》学习笔记(Day 3)——Swift 2.0之后增加的关键字
- 《从零开始学Swift》学习笔记(Day 17)——Swift中数组集合
- 《从零开始学Swift》学习笔记(Day 56)——Swift编码规范之命名规范
- 《从零开始学Swift》学习笔记(Day 28)——总结使用问号(?)和感叹号...
- 《从零开始学Swift》学习笔记(Day 8)——小小常量、变量大作用
- 《从零开始学Swift》学习笔记(Day 9)——离开表达式你试试!
- 《从零开始学Swift》学习笔记(Day 10)——运算符是“ +、-、*、/ ”吗?
- 《从零开始学Swift》学习笔记(Day 11)——数据类型那些事儿?
- 《从零开始学Swift》学习笔记(Day 12)——说几个特殊运算符
- Java生成和操作Excel文件
- fast-rcnn安装记录
- Linux 开发板4G转WiFi热点 手机连接热点上网(二 4G模块的移植)
- GreenDao-多表关联
- file_put_contents在thinkphp中怎么使用,不生成文件的原因
- 《从零开始学Swift》学习笔记(Day 26)——可选链
- 归并排序
- Windows 通过 putty 连接 虚拟机下linux 问题
- NOIP提高组【JZOJ4805.】跟踪
- ExecutorService的十个使用技巧
- 读取txt列,python一行流
- Android 线程和线程池
- Struts2下传和上载CSV与Excel文件
- Java集合容器