From fdcd86711a84098fba756817713d6c3ea05c6329 Mon Sep 17 00:00:00 2001 From: Sunface Date: Fri, 25 Apr 2025 11:18:56 +0800 Subject: [PATCH] Update src/basic/match-pattern/all-patterns.md --- src/basic/match-pattern/all-patterns.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/basic/match-pattern/all-patterns.md b/src/basic/match-pattern/all-patterns.md index 8a1038f6..af3d10d5 100644 --- a/src/basic/match-pattern/all-patterns.md +++ b/src/basic/match-pattern/all-patterns.md @@ -523,7 +523,7 @@ fn main() { } ``` -现在这会打印出 `Default case, x = Some(5)`。现在第二个匹配分支中的模式引入一个不会覆盖外部 `y` 的新变量 `n`,这意味着可以在匹配守卫中使用外部的 `y`。相比指定会覆盖外部 `y` 的模式 `Some(y)`,这里指定为 `Some(n)`。此新建的变量 `n` 并没有覆盖任何值,因为 `match` 外部没有变量 `n`。 +上面代码会打印 `Default case, x = Some(5)`。其中,第二个匹配分支由于没有新建局部变量 `y`,因此在匹配守卫中使用的是外部的 `y`。 匹配守卫 `if n == y` 并不是一个模式所以没有引入新变量。这个 `y` **正是** 外部的 `y` 而不是新的覆盖变量 `y`,这样就可以通过比较 `n` 和 `y` 来表达寻找一个与外部 `y` 相同的值的概念了。