From 52adcff80d2a75e8ccc8fcb3e36a665c6e8e786b Mon Sep 17 00:00:00 2001 From: Jesse <35264598+JesseAtSZ@users.noreply.github.com> Date: Thu, 13 Jan 2022 10:29:35 +0800 Subject: [PATCH] Update all-patterns.md --- book/contents/basic/match-pattern/all-patterns.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/book/contents/basic/match-pattern/all-patterns.md b/book/contents/basic/match-pattern/all-patterns.md index 37b49ae4..2059f029 100644 --- a/book/contents/basic/match-pattern/all-patterns.md +++ b/book/contents/basic/match-pattern/all-patterns.md @@ -470,7 +470,7 @@ match num { } ``` -这个例子会打印出 `less than five: 4`。当 `num` 与模式中第一个分支匹配时, `Some(4)` 可以与 `Some(x)`匹配,接着匹配守卫检查 `x` 值是否小于 `5`,因为 `4` 小于 `5`,所以第一个分支被选择。 +这个例子会打印出 `less than five: 4`。当 `num` 与模式中第一个分支匹配时,`Some(4)` 可以与 `Some(x)`匹配,接着匹配守卫检查 `x` 值是否小于 `5`,因为 `4` 小于 `5`,所以第一个分支被选择。 相反如果 `num` 为 `Some(10)`,因为 10 不小于 5 ,所以第一个分支的匹配守卫为假。接着 Rust 会前往第二个分支,因为这里没有匹配守卫所以会匹配任何 `Some` 成员。 @@ -497,7 +497,7 @@ fn main() { 匹配守卫 `if n == y` 并不是一个模式所以没有引入新变量。这个 `y` **正是** 外部的 `y` 而不是新的覆盖变量 `y`,这样就可以通过比较 `n` 和 `y` 来表达寻找一个与外部 `y` 相同的值的概念了。 -也可以在匹配守卫中使用 **或** 运算符 `|` 来指定多个模式,**同时匹配守卫的条件会作用于所有的模式**。下面代码展示了匹配守卫与 `|` 的优先级。这个例子中重要的部分是匹配守卫 `if y` 作用于 `4`、`5` **和** `6`,即使这看起来好像 `if y` 只作用于 `6`: +也可以在匹配守卫中使用 **或** 运算符 `|` 来指定多个模式,**同时匹配守卫的条件会作用于所有的模式**。下面代码展示了匹配守卫与 `|` 的优先级。这个例子中看起来好像 `if y` 只作用于 `6`,但实际上匹配守卫 `if y` 作用于 `4`、`5` **和** `6` ,在满足`x`属于 `4 | 5 | 6` 后才会判断 `y` 是否为 `true`: ```rust let x = 4; @@ -511,7 +511,7 @@ match x { 这个匹配条件表明此分支只匹配 `x` 值为 `4`、`5` 或 `6` **同时** `y` 为 `true` 的情况。 -虽然在第一个分支中,`x`匹配了模式`4`,但是对于匹配守卫`if y`来说,因为`y`是`false`,因此该守卫条件的值永远是`false`,也意味着第一个分支永远无法被匹配。 +虽然在第一个分支中,`x` 匹配了模式 `4` ,但是对于匹配守卫 `if y` 来说,因为 `y` 是 `false`,因此该守卫条件的值永远是 `false`,也意味着第一个分支永远无法被匹配。 下面的文字图解释了匹配守卫作用于多个模式时的优先级规则,第一张是正确的: @@ -529,7 +529,7 @@ match x { ## @绑定 -`@`(读作at)运算符允许为一个字段绑定另外一个变量。下面例子中,我们希望测试 `Message::Hello` 的 `id` 字段是否位于 `3..=7` 范围内,同时也希望能将其值绑定到 `id_variable` 变量中以便此分支相关联的代码可以使用它。可以将 `id_variable` 命名为 `id`,与字段同名,不过出于示例的目的这里选择了不同的名称。 +`@`(读作at)运算符允许为一个字段绑定另外一个变量。下面例子中,我们希望测试 `Message::Hello` 的 `id` 字段是否位于 `3..=7` 范围内,同时也希望能将其值绑定到 `id_variable` 变量中以便此分支中相关的代码可以使用它。我们可以将 `id_variable` 命名为 `id`,与字段同名,不过出于示例的目的这里选择了不同的名称。 ```rust enum Message { @@ -553,7 +553,7 @@ match msg { -上例会打印出 `Found an id in range: 5`。通过在 `3..=7` 之前指定 `id_variable @`,我们捕获了任何匹配此范围的值并同时将改值绑定到变量`id_variable`上。 +上例会打印出 `Found an id in range: 5`。通过在 `3..=7` 之前指定 `id_variable @`,我们捕获了任何匹配此范围的值并同时将该值绑定到变量`id_variable`上。 第二个分支只在模式中指定了一个范围,`id` 字段的值可以是 `10、11 或 12`,不过这个模式的代码并不知情也不能使用 `id` 字段中的值,因为没有将 `id` 值保存进一个变量。