|
|
|
@ -77,7 +77,7 @@ match x {
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
如果 `x` 是 1、2、3、4 或 5,第一个分支就会匹配。这相比使用 `|` 运算符表达相同的意思更为方便;相比 `1..=5`,使用 `|` 则不得不指定 `1 | 2 | 3 | 4 | 5` 这五个值,而使用 `..=` 指定序列就简短的多,比如希望匹配比如从 1 到 1000 的数字的时候!
|
|
|
|
|
如果 `x` 是 1、2、3、4 或 5,第一个分支就会匹配。这相比使用 `|` 运算符表达相同的意思更为方便;相比 `1..=5`,使用 `|` 则不得不指定 `1 | 2 | 3 | 4 | 5` 这五个值,而使用 `..=` 指定序列就简短的多,比如希望匹配从 1 到 1000 的数字的时候!
|
|
|
|
|
|
|
|
|
|
序列只允许用于数字或字符类型,原因是:它们可以连续,同时编译器在编译期可以检查该序列是否为空,字符和数字值是 Rust 中仅有的可以用于判断是否为空的类型。
|
|
|
|
|
|
|
|
|
@ -506,7 +506,7 @@ match num {
|
|
|
|
|
|
|
|
|
|
模式中无法提供类如 `if x < 5` 的表达能力,我们可以通过匹配守卫的方式来实现。
|
|
|
|
|
|
|
|
|
|
在之前,我们提到可以使用匹配守卫来解决模式中变量覆盖的问题,那里 `match` 表达式的模式中新建了一个变量而不是使用 `match` 之外的同名变量。内部变量覆盖了外部变量,意味着此时不能够使用外部变量的值,下面代码展示了如何使用匹配守卫修复这个问题。
|
|
|
|
|
在[之前](#匹配命名变量),我们提到可以使用匹配守卫来解决模式中变量覆盖的问题,那里 `match` 表达式的模式中新建了一个变量而不是使用 `match` 之外的同名变量。内部变量覆盖了外部变量,意味着此时不能够使用外部变量的值,下面代码展示了如何使用匹配守卫修复这个问题。
|
|
|
|
|
|
|
|
|
|
```rust
|
|
|
|
|
fn main() {
|
|
|
|
|