7.1 枚举(可存储不同类型的值)
7.1.1 基本概念
7.1.2 枚举的简洁用法:构造函数
7.1.3 枚举的优势:处理不同类型和数量的数据
- 枚举成员的类型:字符串、数字类型、结构体、枚举
- 注意:在未将标准库枚举引入当前作用域中时,可以创建与标准库中同名的枚举!
7.1.4 在枚举中定义方法
7.2 Option 枚举
T
表示不会存在空值的情况;Option<T>
表示存在空值的情况,需要考虑对空值的处理Option<T>
和T
是不同类型的,无法直接进行计算(也就是说,在对Option<T>
进行运算之前必须将其转换为T
)Option
已经引入 prelude 中,无需前缀Option::
,可直接使用Some
、None
7.3 match 控制流结构
7.3.1 match 基础
match
的分支组成结构:匹配模式Coin::Penny
+=>
+ 代码块{some_code}
组成;match
可以有多个分支match
的匹配模式类型:字面值、变量、通配符、其他内容- 每个分支相关联的代码作为一个表达式,而表达式的结果值将作为整个
match
表达式的返回值 - 如果想要在分支中运行多行代码,可以使用大括号,而分支后的逗号是可选的
7.3.2 match 绑定值的模式
7.3.3 match 匹配 Option<T>
7.3.4 match 必须是穷尽的
7.3.5 match 中的通配模式和 _ 占位符
- 需要利用变量:通配模式
other => fn(other),
,且必须作为最后一个分支 - 不需要利用变量:
_
占位符,_ => fn(),
- 不需要利用变量,且不做任何事:
_ => (),
,返回单元值
7.4 if let 简洁控制流
if let
:只匹配一个模式的值而忽略其他模式的情况if let xxx else xxx
:匹配**两个模式(两种情况)**的值,并分别处理