摘要訊息 : 學習 Swift 中的問號和感嘆號.

0. 前言

本文于 2022 年 3 月 18 日进行一次更新和修正. 修正之后本文已经归档, 不再享受更新.

1. Swift 的初始化

在 Swift 语言中, 我们使用 var 来定义变量, 但是 Swift 并不会自动给一个变量赋初始值. 当没有对值进行初始化的时候, 编译器就会报错.

2. Optional 类型与问号 ? 和感叹号 !

Optional 类型实际上是一个 enum 枚举类型, 该枚举类型包括了 NoneSome 两个元素.

nil 对应枚举值 Optional.None.

当我们做如下定义 :

var a : Int?
a = 6
print(a)    // 结果 : Optional(6)

此时, a 不属于 Int 类型, 而是属于 Optional 类型.

对于一个 Optional 类型, 如果它未被初始化, 则初始值为 nil.

a 的右侧添加了一个前面没有空格的问号 ? 表示对 a 变量进行拆包, 尝试获得 Optional 包中的 Int 值.

当将问号 ? 改成感叹号 !

var a : Int!
a = 6
print(a)    //结果 : 6

当使用感叹号的时候, 相当于在告诉编译器 : 我确定 a 一定不是 nil.