mirror of
https://github.com/KaiserY/trpl-zh-cn
synced 2024-11-14 04:41:49 +08:00
更新src/ch06-02-match.md
This commit is contained in:
parent
d68da794d7
commit
0d88f0c55b
@ -2,7 +2,7 @@
|
||||
|
||||
> [ch06-02-match.md](https://github.com/rust-lang/book/blob/main/src/ch06-02-match.md)
|
||||
> <br>
|
||||
> commit db403a8bdfe5223d952737f54b0d9651b3e6ae1d
|
||||
> commit c76f1b4d011fe59fc4f5e6f258070fc40d9921e4
|
||||
|
||||
Rust 有一个叫做 `match` 的极为强大的控制流运算符,它允许我们将一个值与一系列的模式相比较,并根据相匹配的模式执行相应代码。模式可由字面值、变量、通配符和许多其他内容构成;第十八章会涉及到所有不同种类的模式以及它们的作用。`match` 的力量来源于模式的表现力以及编译器检查,它确保了所有可能的情况都得到处理。
|
||||
|
||||
@ -24,7 +24,7 @@ Rust 有一个叫做 `match` 的极为强大的控制流运算符,它允许我
|
||||
|
||||
每个分支相关联的代码是一个表达式,而表达式的结果值将作为整个 `match` 表达式的返回值。
|
||||
|
||||
如果分支代码较短的话通常不使用大括号,正如示例 6-3 中的每个分支都只是返回一个值。如果想要在分支中运行多行代码,可以使用大括号。例如,如下代码在每次使用`Coin::Penny` 调用时都会打印出 “Lucky penny!”,同时仍然返回代码块最后的值,`1`:
|
||||
如果分支代码较短的话通常不使用大括号,正如示例 6-3 中的每个分支都只是返回一个值。如果想要在分支中运行多行代码,可以使用大括号,而分支后的逗号是可选的。例如,如下代码在每次使用`Coin::Penny` 调用时都会打印出 “Lucky penny!”,同时仍然返回代码块最后的值,`1`:
|
||||
|
||||
```rust
|
||||
{{#rustdoc_include ../listings/ch06-enums-and-pattern-matching/no-listing-08-match-arm-multiple-lines/src/main.rs:here}}
|
||||
@ -94,7 +94,7 @@ Rust 有一个叫做 `match` 的极为强大的控制流运算符,它允许我
|
||||
|
||||
### 匹配是穷尽的
|
||||
|
||||
`match` 还有另一方面需要讨论。考虑一下 `plus_one` 函数的这个版本,它有一个 bug 并不能编译:
|
||||
`match` 还有另一方面需要讨论:这些分支必须覆盖了所有的可能性。考虑一下 `plus_one` 函数的这个版本,它有一个 bug 并不能编译:
|
||||
|
||||
```rust,ignore,does_not_compile
|
||||
{{#rustdoc_include ../listings/ch06-enums-and-pattern-matching/no-listing-10-non-exhaustive-match/src/main.rs:here}}
|
||||
@ -122,7 +122,7 @@ Rust 知道我们没有覆盖所有可能的情况甚至知道哪些模式被忘
|
||||
|
||||
Rust 还提供了一个模式,当我们不想使用通配模式获取的值时,请使用 `_` ,这是一个特殊的模式,可以匹配任意值而不绑定到该值。这告诉 Rust 我们不会使用这个值,所以 Rust 也不会警告我们存在未使用的变量。
|
||||
|
||||
让我们改变游戏规则,当你掷出的值不是 3 或 7 的时候,你必须再次掷出。这种情况下我们不需要使用这个值,所以我们改动代码使用 `_` 来替代变量 `other` :
|
||||
让我们改变游戏规则:现在,当你掷出的值不是 3 或 7 的时候,你必须再次掷出。这种情况下我们不需要使用这个值,所以我们改动代码使用 `_` 来替代变量 `other` :
|
||||
|
||||
```rust
|
||||
{{#rustdoc_include ../listings/ch06-enums-and-pattern-matching/no-listing-16-underscore-catchall/src/main.rs:here}}
|
||||
@ -130,7 +130,7 @@ Rust 还提供了一个模式,当我们不想使用通配模式获取的值时
|
||||
|
||||
这个例子也满足穷举性要求,因为我们在最后一个分支中明确地忽略了其他的值。我们没有忘记处理任何东西。
|
||||
|
||||
让我们再次改变游戏规则,如果你掷出 3 或 7 以外的值,你的回合将无事发生。我们可以使用单元值(在[“元组类型”][tuples]<!-- ignore -->一节中提到的空元组)作为 `_` 分支的代码:
|
||||
最后,让我们再次改变游戏规则,如果你掷出 3 或 7 以外的值,你的回合将无事发生。我们可以使用单元值(在[“元组类型”][tuples]<!-- ignore -->一节中提到的空元组)作为 `_` 分支的代码:
|
||||
|
||||
```rust
|
||||
{{#rustdoc_include ../listings/ch06-enums-and-pattern-matching/no-listing-17-underscore-unit/src/main.rs:here}}
|
||||
|
Loading…
Reference in New Issue
Block a user