Swift 学习笔记——可选类型

Swift 学习笔记——可选类型

可选类型与隐式展开可选项

使用 ? 跟随在变量类型之后可以将一个变量声明为可选类型,这意味着这个变量要么是指定类型的值,要么是空。换句话说当我们给一个可选类型变量赋值的时候如果赋值失败,那么这个变量的值就是 nil 。下面是一个简单的实例。

1
2
3
var str : String = "123;"
var num : Int? = Int(str)
print(num) //此时输出nil

使用 ! 跟随在变量类型之后可以将一个变量声明为隐式展开可选项,这意味着这个变量可以确定一定有值,那么访问时就不需要展开。可以直接使用隐式展开可选项的变量名为进行赋值,但需要注意若直接用隐式展开可选项自动推断为变量确定类型的话, 被赋值变量的类型是可选类型。

1
2
3
4
5
let num : Int! = 3
var a : Int = num
print(a) //此时输出3
var b = num
print(b) //此时输出optional(3)

可选绑定( if let & guard let

创建一个临时变量,将一个可选类型的变量赋给这个临时变量,对于 if let 和 while let 来说,如果可选类型变量有值赋值成功则执行 if 或 while 控制流中的语句,对 guard let 来说,若没有值赋值失败则执行 else 控制流语句。语法如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
func doSomething(str: String?) {
if let v = str {
// if str not nil, use v to do something
}
// 两个if语句等价
if str != nil {
let v = str!
}
}

func doSomething(str: String?) {
guard let v = str else { return }
// if str not nil, use v to do something
// guard let语句与下面的if-else控制流等价
if str == nil {
return
} else {
let v = str!
}
}

Swift 学习笔记——可选类型
https://wenchanyuan.com/swift_optional_type/
作者
蟾圆
发布于
2019年10月28日
许可协议