目录
  1. 1. Swift学习笔记——可选类型
    1. 1.1. 可选类型与隐式展开可选项
    2. 1.2. 可选绑定( if let & guard let )
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!
}
}
文章作者: Rylaris
文章链接: http://wenchanyuan.com/2019/10/28/Swift学习笔记——可选类型/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Rylaris的个人技术博客
打赏
  • WeChat Pay
  • Alipay