mirror of
https://github.com/gnu4cn/rust-lang-zh_CN.git
synced 2024-12-26 04:40:33 +08:00
Refining Ch06.
This commit is contained in:
parent
de42aca5d9
commit
4c15d51218
@ -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` 表达式显得有些冗长的情况下,非常有用。
|
||||
|
Loading…
Reference in New Issue
Block a user