You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
# 模式与模式匹配
|
|
|
|
|
|
|
|
|
|
> [ch18-00-patterns.md](https://github.com/rust-lang/book/blob/main/src/ch18-00-patterns.md)
|
|
|
|
|
> <br>
|
|
|
|
|
> commit 6fce661a0938aa0da06526e7b8f98fd7e67a222f
|
|
|
|
|
|
|
|
|
|
**模式**(*Patterns*)是 Rust 中特殊的语法,它用来匹配类型中的结构,无论类型是简单还是复杂。结合使用模式和 `match` 表达式以及其他结构可以提供更多对程序控制流的支配权。模式由如下一些内容组合而成:
|
|
|
|
|
|
|
|
|
|
* 字面值
|
|
|
|
|
* 解构的数组、枚举、结构体或者元组
|
|
|
|
|
* 变量
|
|
|
|
|
* 通配符
|
|
|
|
|
* 占位符
|
|
|
|
|
|
|
|
|
|
一些模式的例子包括`x`, `(a, 3)` 和 `Some(Color::Red)`。在模式为有效的上下文中,这些部分描述了数据的形状。接着可以用其匹配值来决定程序是否拥有正确的数据来运行特定部分的代码。
|
|
|
|
|
|
|
|
|
|
我们通过将一些值与模式相比较来使用它。如果模式匹配这些值,我们对值部分进行相应处理。回忆一下第六章讨论 `match` 表达式时像硬币分类器那样使用模式。如果数据符合这个形状,就可以使用这些命名的片段。如果不符合,与该模式相关的代码则不会运行。
|
|
|
|
|
|
|
|
|
|
本章是所有模式相关内容的参考。我们将涉及到使用模式的有效位置,*refutable* 与 *irrefutable* 模式的区别,和你可能会见到的不同类型的模式语法。在最后,你将会看到如何使用模式创建强大而简洁的代码。
|