Improve Ch13

This commit is contained in:
Unisko PENG 2023-05-04 15:07:36 +08:00
parent d87275fe33
commit 220448ed37

View File

@ -850,11 +850,11 @@ impl Config {
由于咱们正取得 `args` 的所有权,且咱们将通过对其迭代而修改 `args`,咱们便可把 `mut` 关键字,添加到 `args` 参数的说明中,以将其构造为可变。
### 使用 `Iterator` 特质的方法取代原先的索引操作
### 使用 `Iterator` 特质方法代替索引
**Using `Iterator` Trait Methods Instead of Indexing**
接下来,这里将修正 `Config::build` 的函数体。由于 `args` 实现了 `Iterator` 特质,因此就明白这里可以在他上面调用 `next` 方法!下面清单 13-20 将清单 12-23 中的代码,更新为了使用 `next` 方法:
接下来,咱们将修正 `Config::build` 函数的主体。由于 `args` 实现了 `Iterator` 特质,咱们便清楚咱们可以调用他上面 `next` 方法!下面清单 13-20 将清单 12-23 中的代码,更新为了使用 `next` 方法:
文件名:`src/data_structures.rs`
@ -886,9 +886,9 @@ impl Config {
}
```
*清单 13-20`Config::build` 函数体,修改为使用迭代器方法*
*清单 13-20`Config::build` 函数的主体,修改为使用迭代器方法*
请记住 `env::args` 返回值中的第一个,是程序的名字。这里是要忽略那个值,而到下一值处,因此这里首先调用了 `next` 并对该返回值什么也没做。其次,这里调用了 `next` 来获取到这里打算将其放入 `Config``query` 字段的那个值。在 `next` 返回的是一个 `Some` 时,这里使用了一个 `match` 来提取该值。在其返回的是 `None` 时,就表示没有给到足够的参数,同事这里及早地返回了一个 `Err` 值。对于 `filename` 值,这里进行了同样的处理。
请记住 `env::args` 返回值中的第一个值,是程序的名字。咱们是要忽略那个值,而到下一值处,所以咱们首先调用 `next`,并对返回值不做任何处理。其次,咱们调用 `next` 来获取到咱们想要放入 `Config``query` 字段的值。若 `next` 返回一个 `Some`,咱们就使用 `match` 来提取该值。若其返回了 `None`,就意味着没有给出足够的参数,而咱们就及早地返回一个 `Err` 值。对于 `filename` 值,咱们进行了同样的处理。
### 使用迭代器适配器令到代码更清晰