File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11# 模式
2- 模式,是Rust另一个强大的特性。它可以被用在` let ` 和` match ` 表达式里面。相信大家应该还记得我们在[ 基础类型 ] ( ../type/types.md ) 中提到的关于在let表达式中解构元组的例子,实际上这就是一个模式。
2+ 模式,是Rust另一个强大的特性。它可以被用在` let ` 和` match ` 表达式里面。相信大家应该还记得我们在[ 复合类型 ] ( ../type/compound- types.md ) 中提到的关于在let表达式中解构元组的例子,实际上这就是一个模式。
33``` rust
44let tup = (0u8 , 1u8 );
55let (x , y ) = tup ;
66```
7- 而且我们需要知道的是,一个模式中如果出现了和前面同名的变量,则这个变量会在当前作用域里被模式中的值覆盖掉 。比如:
7+ 而且我们需要知道的是,一个模式中如果出现了和当前作用域中存在的同名的绑定,它会覆盖掉外部的绑定 。比如:
88
99``` rust
1010let x = 1 ;
@@ -24,7 +24,7 @@ x: c c: c
2424x: 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 ` 。
You can’t perform that action at this time.
0 commit comments