Improve Ch13

This commit is contained in:
Unisko PENG 2023-04-28 09:06:48 +08:00
parent dc101b8074
commit 3ab4a2347b

View File

@ -507,22 +507,22 @@ fn main() {
```
## 使用迭代器对条目系列进行处理
## 使用迭代器处理系列条目
**Processing a Series of Items with Iterators**
迭代器模式,实现了在条目序列上依次执行某些任务。迭代器负责着对各个条目进行遍历,及判断序列在什么时候结束的逻辑。在运用迭代器时,就不必自己再实现那样的逻辑了
迭代器模式,the iterator pattern, 实现了在条目序列上,依次执行某个任务。迭代器负责对各个条目遍历,及判断序列何时结束的逻辑。咱们运用了迭代器后,就不必自己再实现那个逻辑
在 Rust 中,迭代器是 *惰性的lazy*,即在调用那些消费该迭代器以用完他之前,他们是没有效果的。比如,下面清单 13-10 中的代码就通过调用定义在 `Vec<T>` 上的 `iter` 方法,而创建出了一个在那个矢量 `v1` 中各个条目上的迭代器。此代码本身并不会执行任何有用的事情。
在 Rust 中,迭代器是 *惰性的lazy*,这意味着在咱们调用消费该迭代器的方法,将其用完前,他们没有任何效果。例如,下面清单 13-10 中的代码,通过调用定义在 `Vec<T>` 上的 `iter` 方法,而在矢量 `v1` 中的项目上创建了一个迭代器。这段代码本身并不做任何有用的事情。
```rust
let v1 = vec! [1, 2, 3];
let v1_iter = v1.iter();
```
*清单 13-10创建出一个迭代器*
*清单 13-10创建迭代器*
其中的迭代器,是存储在那个 `v1_iter` 变量中的。一旦创建出了某个迭代器,就可以多种方式对其加以使用了。在第 3 章中的清单 3-5 中,就曾使用了一个 `for` 循环,对一个数组进行过迭代,而在该数组的各个条目上执行一些代码。而在使用 `for` 循环这表象之下,则是隐式地创建出了一个迭代器,并于随后消费了这个迭代器,不过在本小节之前,只是并未提及其确切工作原理。
这个迭代器被存储在变量 `v1_iter` 中。一旦咱们已创建出迭代器,咱们就能以多种方式使用他。在第 3 章中的清单 3-5 中,就曾使用了一个 `for` 循环,对一个数组进行过迭代,而在该数组的各个条目上执行一些代码。而在使用 `for` 循环这表象之下,则是隐式地创建出了一个迭代器,并于随后消费了这个迭代器,不过在本小节之前,只是并未提及其确切工作原理。
下面清单 13-11 中的示例里,就把迭代器的创建,从那个 `for` 循环中迭代器的使用分离开来了。在使用 `v1_iter` 中的迭代器,调用那个 `for` 循环时,在那个迭代器中的各个元素,就在那个循环的一个个迭代中,被使用了,而这就会打印出各个值。