Merge pull request #661 from iphucc/patch-4

Update ch18-03-pattern-syntax.md
This commit is contained in:
KaiserY 2022-10-27 23:15:40 +08:00 committed by GitHub
commit 4fac4ea6a2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -295,7 +295,7 @@ Rust 不可能决定在元组中匹配 `second` 值之前应该忽略多少个
相反如果 `num``Some(10)`,因为 10 不小于 5 所以第一个分支的匹配守卫为假。接着 Rust 会前往第二个分支,这会匹配因为它没有匹配守卫所以会匹配任何 `Some` 成员。
无法在模式中表达 `if x % 2 == 0` 的条件,所以匹配守卫提供了表现此逻辑的能力。这种额外表现力的缺点在于当涉及匹配守卫表达式时编译器不会尝试检查穷尽性。
无法在模式中表达类似 `if x % 2 == 0` 的条件,所以通过匹配守卫提供了表达类似逻辑的能力。这种替代表达方式的缺点是,编译器不会尝试为包含匹配守卫的模式检查穷尽性。
在示例 18-11 中,我们提到可以使用匹配守卫来解决模式中变量覆盖的问题,那里 `match` 表达式的模式中新建了一个变量而不是使用 `match` 之外的同名变量。新变量意味着不能够测试外部变量的值。示例 18-27 展示了如何使用匹配守卫修复这个问题。