Swift2.0学习笔记(Day 26)——可选链

作者: tony关东升 | 来源:发表于2015-11-16 13:41 被阅读114次

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

在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"

}

letemp = 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)

相关文章

  • Swift2.0学习笔记(Day 26)——可选链

    原创文章,欢迎转载。转载请注明:关东升的博客 在Swift程序表达式中会看到问号(?)和感叹号(!),它们代表什么...

  • swift学习笔记(16)--- 可选链

    可选链式调用是一种可以在当前值可能为 nil 的可选值上请求和调用属性、方法及下标的方法。如果可选值有值,那么调用...

  • 【视觉笔记】

    day26【视觉笔记】

  • Swift-13.可选类型深入探讨

    本章包含内容: 可选类型深入探讨 可选链的介绍 可选链的返回值 可选链调用下标索引 可选链的赋值操作 基于多层链接...

  • swift3语法(十三)

    可选链 定义可选链在取值可能为空的属性、方法、下标后面加上 ? 就表示一个可选链在可选值后面加上 ! 来强制展开,...

  • 一个砍自己,七个只剩六

    《无人生还》读书笔记 26。 Day 26,Page 138 - Page 152,Chapter 10 - Ch...

  • ★ iOS高级:Swift入门精讲③ 01 swift编程-07

    前言:本篇仅为视频学习笔记 可选项 (Optional)★ 可选项,一般也叫可选类型,它允许将值设置为nil。例...

  • swift面向对象基础<三>

    接下来就讨论一下可选链,类型属性和类型方法,构造器 1.可选链是用于处理可选类型的属性,方法和下标2.使用可选链代...

  • swift学习之旅--可选链

    1.可选链的含义 可选链,就是在声明属性的时候,在属性的类型后面加上?问号,使得属性有一个默认值nil,这个特性非...

  • 网络编程,TCP,UDP

    day26笔记【网络编程,TCP,UDP】 day26授课目录: 1_网络编程(网络编程概述)(了解) A:计算机...

网友评论

    本文标题:Swift2.0学习笔记(Day 26)——可选链

    本文链接:https://www.haomeiwen.com/subject/bxihhttx.html