|
|
|
@ -18,7 +18,7 @@ match VALUE {
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
`match` 表达式必须是 **穷尽**(*exhaustive*)的,意为 `match` 表达式所有可能的值都必须被考虑到。一个确保覆盖每个可能值的方法是在最后一个分支使用捕获所有的模式 ———— 比如,一个匹配任何值的名称永远也不会失败,因此可以覆盖所有匹配剩下的情况。
|
|
|
|
|
`match` 表达式必须是 **穷尽**(*exhaustive*)的,意为 `match` 表达式所有可能的值都必须被考虑到。一个确保覆盖每个可能值的方法是在最后一个分支使用捕获所有的模式 —— 比如,一个匹配任何值的名称永远也不会失败,因此可以覆盖所有匹配剩下的情况。
|
|
|
|
|
|
|
|
|
|
有一个特定的模式 `_` 可以匹配所有情况,不过它从不绑定任何变量。这在例如希望忽略任何未指定值的情况很有用。本章之后会详细讲解。
|
|
|
|
|
|
|
|
|
@ -76,7 +76,7 @@ in the Rust sense? -->
|
|
|
|
|
|
|
|
|
|
### `while let` 条件循环
|
|
|
|
|
|
|
|
|
|
一个与 `if let` 结构类似的是 `while let` 条件循环,它允许只要模式匹配就一直进行 `while` 循环。示例 18-2 展示了一个使用 `while let` 的例子,它使用 vector 作为栈并打以先进后出的方式打印出 vector 中的值:
|
|
|
|
|
一个与 `if let` 结构类似的是 `while let` 条件循环,它允许只要模式匹配就一直进行 `while` 循环。示例 18-2 展示了一个使用 `while let` 的例子,它使用 vector 作为栈并以先进后出的方式打印出 vector 中的值:
|
|
|
|
|
|
|
|
|
|
```rust
|
|
|
|
|
let mut stack = Vec::new();
|
|
|
|
|