Skip to content

Commit 2bb444d

Browse files
Merge pull request #391 from Librazy/pattern-n-binding
使用“绑定”描述模式的行为
2 parents 4b3fe8b + cf45642 commit 2bb444d

1 file changed

Lines changed: 5 additions & 5 deletions

File tree

match/pattern.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
# 模式
2-
模式,是Rust另一个强大的特性。它可以被用在`let``match`表达式里面。相信大家应该还记得我们在[基础类型](../type/types.md)中提到的关于在let表达式中解构元组的例子,实际上这就是一个模式。
2+
模式,是Rust另一个强大的特性。它可以被用在`let``match`表达式里面。相信大家应该还记得我们在[复合类型](../type/compound-types.md)中提到的关于在let表达式中解构元组的例子,实际上这就是一个模式。
33
```rust
44
let tup = (0u8, 1u8);
55
let (x, y) = tup;
66
```
7-
而且我们需要知道的是,一个模式中如果出现了和前面同名的变量,则这个变量会在当前作用域里被模式中的值覆盖掉。比如:
7+
而且我们需要知道的是,一个模式中如果出现了和当前作用域中存在的同名的绑定,它会覆盖掉外部的绑定。比如:
88

99
```rust
1010
let x = 1;
@@ -24,7 +24,7 @@ x: c c: c
2424
x: 1
2525
```
2626

27-
在以上代码中,match作用域里的`x`这个变量被覆盖成了`'c'`,而出了这个作用域,变量会恢复成原来的值。这和变量绑定的行为是一致的。
27+
在以上代码中,match作用域里的`x`这个绑定被覆盖成了`'c'`,而出了这个作用域,绑定`x`又恢复为`1`。这和变量绑定的行为是一致的。
2828

2929
## 更强大的解构
3030

@@ -158,7 +158,7 @@ match x {
158158
}
159159
```
160160

161-
如代码所示,e被赋予了x的值
161+
如代码所示,e绑定了x的值
162162

163163
当然,变量绑定是一个极其有用的语法,下面是一个来自官方doc里的例子:
164164

@@ -194,6 +194,6 @@ match x {
194194
_ => println!("no"),
195195
}
196196
```
197-
猜以下上面代码的输出
197+
猜一下上面代码的输出
198198

199199
答案是`no`。因为guard是后置条件,是整个匹配的后置条件:所以上面的式子可以被等同写为`(4 | 5) if y`

0 commit comments

Comments
 (0)