我是靠谱客的博主 高大大象,这篇文章主要介绍Swift 基本语法-"if let"和"guard let"Swift 基本语法01-Swift简介,现在分享给大家,希望可以做个参考。

Swift 基本语法01-Swift简介

Swift 基本语法02-"let"和"var"
Swift 基本语法04-"switch"和"for"
Swift 基本语法05-"String"
Swift 基本语法06-数组和字典

1. if let用法

1.1 普通ifif let的比较
1> 如果常量是可选项(Optional),if判断后仍然需要解包(!

复制代码
1
2
3
4
5
6
7
let name: String? = "老王" let age: Int? = 10 if name != nil && age != nil { print(name! + String(age!)) // 输出:老王10 }

2> 如果常量是可选项(Optional),if let判断后不需要解包(!),{ }内一定有值

复制代码
1
2
3
4
5
6
7
8
9
let name: String? = "老王" let age: Int? = 10 // if let 连用,判断对象的值是否为'nil' if let nameNew = name, let ageNew = age { // 进入分支后,nameNew 和 ageNew 一定有值 print(nameNew + String(ageNew)) // 输出:老王10 }

Tips:nameNew和 ageNew的作用域仅在{}

3> if var的用法,和if let的区别就是可以在{}内修改变量的值

复制代码
1
2
3
4
5
6
7
8
9
10
let name: String? = "老王" let age: Int? = 10 if var nameNew = name, let ageNew = age { // 'var'修饰,可以修改'nameNew'的值,'let'修改的不可以修改 nameNew = "老李" print(nameNew + String(ageNew)) // 输出:老李10 }

2. guard let用法

1> guard letif let刚好相反,guard let守护一定有值。如果没有,直接返回。
2> 通常判断是否有值之后,会做具体的逻辑实现,通常代码多
3> 如果用 if let凭空多了一层分支,guard let是降低分支层次的办法
4> guard let语法是 Swift 2.0 推出的

复制代码
1
2
3
4
5
6
7
8
9
10
11
let name: String? = "老王" let age: Int? = 10 guard let nameNew = name, let ageNew = age else { print("姓名 或 年龄 为nil") return } // 代码执行至此, nameNew 和 ageNew 一定有值 print(nameNew + String(ageNew)) // 输出:老王10

3. if letguard let的命名技巧

技巧:取和参数名相同的变量名

1> guard let演示

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
override func viewDidLoad() { super.viewDidLoad() demo(name: "老王", age: 11) } func demo(name: String?, age: Int?) { guard let name = name, let age = age else { print("姓名或年龄为nil") return } /** * 'name'至此会有两个 * 1.String name('guard let'守护,等号右边的'name') * 2.String? name('guard let'守护,等号右边的'name') * 3.这里正常应该选择不带'?''name',但是即便是选择了('Optional''name'),编译器也会帮你更正过来,这就是取名的技巧 */ print(name + String(age)) // 输出:老王11('name''age'为不带'Optional'的) }

2> if let演示

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
override func viewDidLoad() { super.viewDidLoad() demo(name: "老王", age: 11) } func demo(name: String?, age: Int?) { if let name = name, let age = age { /** * 'name'至此只会有两个 * 1.String name('if let'守护,等号右边的'name',仅在'{}'作用域内有效) * 2.String? name('if let'守护,等号右边的'name') * 3.这里正常应该选择不带'?''name',但是即便是选择了('Optional''name'),编译器也会帮你更正过来,这就是取名的技巧 * 4.如果'name''age'中有一个为'nil',或者都为'nil',下面就不会输出 */ print(name + String(age)) // 输出:老王11('name''age'为不带'Optional'的) } /** * 'name'至此只会有一个 * 2.String? name(demo(name: String?)中的'name') * 3.这里正常应该选择不带'?''name',但是即便是选择了('Optional''name'),编译器也会帮你更正过来,这就是取名的技巧 */ print("demo(name: String?)中的'name'") }

最后

以上就是高大大象最近收集整理的关于Swift 基本语法-"if let"和"guard let"Swift 基本语法01-Swift简介的全部内容,更多相关Swift内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(95)

评论列表共有 0 条评论

立即
投稿
返回
顶部