mirror of
https://github.com/gnu4cn/rust-lang-zh_CN.git
synced 2025-03-15 11:50:34 +08:00
Improve Ch13
This commit is contained in:
parent
dc101b8074
commit
3ab4a2347b
@ -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` 循环时,在那个迭代器中的各个元素,就在那个循环的一个个迭代中,被使用了,而这就会打印出各个值。
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user