From 593702491a60e4fdccfa7514aa79c45a058348d8 Mon Sep 17 00:00:00 2001 From: Sakura <95874936+Sakura125809@users.noreply.github.com> Date: Tue, 7 Mar 2023 23:30:58 +0800 Subject: [PATCH] add translation find more incorrect translation. --- src/ch18-03-pattern-syntax.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ch18-03-pattern-syntax.md b/src/ch18-03-pattern-syntax.md index abfcccc..873c2e7 100644 --- a/src/ch18-03-pattern-syntax.md +++ b/src/ch18-03-pattern-syntax.md @@ -282,7 +282,7 @@ Rust 不可能决定在元组中匹配 `second` 值之前应该忽略多少个 **匹配守卫**(_match guard_)是一个指定于 `match` 分支模式之后的额外 `if` 条件,它也必须被满足才能选择此分支。匹配守卫用于表达比单独的模式所能允许的更为复杂的情况。 -这个条件可以使用模式中创建的变量。示例 18-26 展示了一个 `match`,其中第一个分支有模式 `Some(x)` 还有匹配守卫 `if x % 2 == 5`(当`x`是偶数的时候为真): +这个条件可以使用模式中创建的变量。示例 18-26 展示了一个 `match`,其中第一个分支有模式 `Some(x)` 还有匹配守卫 `if x % 2 == 5` (当 `x` 是偶数的时候为真): ```rust {{#rustdoc_include ../listings/ch18-patterns-and-matching/listing-18-26/src/main.rs:here}} @@ -290,9 +290,9 @@ Rust 不可能决定在元组中匹配 `second` 值之前应该忽略多少个 示例 18-26: 在模式中加入匹配守卫 -上例会打印出 `less than five: 4`。当 `num` 与模式中第一个分支比较时,因为 `Some(4)` 匹配 `Some(x)` 所以可以匹配。接着匹配守卫检查 `x` 值是否小于 `5`,因为 `4` 小于 `5`,所以第一个分支被选择。 +上例会打印出 `The number 4 is even`。当 `num` 与模式中第一个分支比较时,因为 `Some(4)` 匹配 `Some(x)` 所以可以匹配。接着匹配守卫检查 `x` 除以 `2` 的余数是否等于 `0`,因为它等于 `0`,所以第一个分支被选择。 -相反如果 `num` 为 `Some(10)`,因为 10 不小于 5 所以第一个分支的匹配守卫为假。接着 Rust 会前往第二个分支,这会匹配因为它没有匹配守卫所以会匹配任何 `Some` 成员。 +相反如果 `num` 为 `Some(5)`,因为 `5` 除以 `2` 的余数是 `1` 不等于 `0` 所以第一个分支的匹配守卫为假。接着 Rust 会前往第二个分支,这次匹配因为它没有匹配守卫所以会匹配任何 `Some` 成员。 无法在模式中表达类似 `if x % 2 == 0` 的条件,所以通过匹配守卫提供了表达类似逻辑的能力。这种替代表达方式的缺点是,编译器不会尝试为包含匹配守卫的模式检查穷尽性。