Refining Ch06.

This commit is contained in:
rust-lang.xfoss.com 2023-12-18 17:17:50 +08:00
parent de42aca5d9
commit 4c15d51218

View File

@ -247,7 +247,8 @@ fn move_player(num_spaces: u8) {}
Rust 还提供了一种,在我们需要一个全包,但又不想 *使用* 全包模式中的值时,可以使用的模式:`_` 是个特殊的模式,他可以匹配任何值,但不会与该值绑定。这会告诉 Rust我们不打算使用该值因此 Rust 不会警告我们,有个未使用的变量。
下面就来将那个游戏的规则修改为,在投中骰子的三点和七点之外别的点数时,就必须再投一次骰子。那么这里就不需要用到那个点数值了,因此就可以将这里的代码修改为使用 `_` 而不是那个名为 `other` 的变量:
我们来改变一下游戏规则:现在,如果掷出的不是 3 或 7 点,就必须再掷一次。我们不再需要使用那个全包值,因此我们把咱们的代码修改为使用 `_`,代替名为 `other` 的变量:
```rust
let dice_roll = 9;
@ -263,9 +264,11 @@ Rust 还提供了一种,在我们需要一个全包,但又不想 *使用*
fn reroll() {}
```
由于这里在最后的支臂中,显式地忽略了全部其他值,因此该示例也是满足 `match` 表达式的穷尽要求的;这里并未忘记掉任何东西。
若再一次修改此游戏的规则,修改为在抛出即非三点也非七点的其他点数时,什么也不会发生,那么就可以通过使用单元值(即在 [元组类型](Ch03_Common_Programming_Concepts.md#元组类型) 小节中讲到的那个空元组类型)作为该 `_` 支臂后的代码,来表达这样的游戏规则:
这个例子也符合穷举性要求,因为我们显式地忽略了最后一个支臂中,所有其他值;我们没有忘记任何可能性。
最后,我们再修改一次游戏规则,如果掷出的不是 3 或 7 点,则在咱们的回合中,不会发生任何其他事情。我们可以使用单元值(在 [元组类型](../programming_concepts/data_types.md#元组类型) 小节中曾提到过的空元组类型),作为 `_` 支臂的代码,来表达这一点:
```rust
let dice_roll = 9;
@ -280,6 +283,7 @@ fn add_fancy_hat() {}
fn remove_fancy_hat() {}
```
这里就显式地告诉 Rust这里将不使用那些不与先前支臂匹配的全部其他值且在此情形下这里不要运行任何代码。
在 [第 18 章](Ch18_Patterns_and_Matching.md) 将涉及到更多有关模式与匹配的内容。而现在就要移步到 `if let` 语法,在那些使用 `match` 表达式显得多余的情形下,`if let` 语法就会有用。
在这里,我们显式地告诉 Rust我们不会使用任何与先前支臂中模式不匹配的其他值且在这种情况下我们不打算运行任何代码。
我们将在 [第 18 章](../Ch18_Patterns_and_Matching.md) 中,结束更多有关模式与匹配的内容。现在,我们将继续讨论 `if let` 这种语法,其在 `match` 表达式显得有些冗长的情况下,非常有用。