Merge pull request #305 from glud123/main

fix:文字遗漏
pull/306/head
Sunface 3 years ago committed by GitHub
commit 0074ed9865
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -160,7 +160,7 @@ for item in collection {
```
第一种方式是循环索引,然后通过索引下标去访问集合,第二种方式是直接循环集合中的元素,优劣如下:
- **性能**:第一种使用方式中`collection[index]`的索引访问,会因为边界检查(bounds checking)导致运行时的性能损耗 - Rust会检查并确认`index`是落在集合内,但是第二种直接迭代的方式就不会触发这种检查,因为编译器会在编译时就完成分析并证明这种访问是合法的
- **性能**:第一种使用方式中`collection[index]`的索引访问,会因为边界检查(bounds checking)导致运行时的性能损耗 - Rust会检查并确认`index`是落在集合内,但是第二种直接迭代的方式就不会触发这种检查,因为编译器会在编译时就完成分析并证明这种访问是合法的
- **安全**:第一种方式里对`collection`的索引访问是非连续的,存在一定可能性在两次访问之间,`collection`发生了变化,导致脏数据产生。而第二种直接迭代的方式是连续访问,因此不存在这种风险(这里是因为所有权吗?是的话可能要强调一下)
由于for循环无需任何条件限制也不需要通过索引来访问因此是最安全也是最常用的通过与下面的`while`的对比,我们能看到为什么`for`会更加安全。

@ -71,7 +71,7 @@ fn value_in_cents(coin: Coin) -> u8 {
}
```
`value_in_cents`函数根据匹配到的硬币类似,返回对应的美分数值,`match`后紧跟着的是一个表达式,跟`if`很像,但是`if`后的表达式必须是一个布尔值,而`match`后的表达式返回值可以是任意类型,只要能跟后面的分支中的模式匹配起来即可,这里的`coin`是枚举`Coin`类型。
`value_in_cents`函数根据匹配到的硬币,返回对应的美分数值,`match`后紧跟着的是一个表达式,跟`if`很像,但是`if`后的表达式必须是一个布尔值,而`match`后的表达式返回值可以是任意类型,只要能跟后面的分支中的模式匹配起来即可,这里的`coin`是枚举`Coin`类型。
接下来是`match`的分支。一个分支有两个部分:**一个模式和针对该模式的处理代码**。第一个分支的模式是`Coin::Penny`,其后的`=>`运算符将模式和将要运行的代码分开。这里的代码就仅仅是表达式`1`,不同分支之间使用逗号分隔。

Loading…
Cancel
Save