diff --git a/src/Ch13_Functional_Language_Features_Iterators_and_Closures.md b/src/Ch13_Functional_Language_Features_Iterators_and_Closures.md index 8b5882b..86706c5 100644 --- a/src/Ch13_Functional_Language_Features_Iterators_and_Closures.md +++ b/src/Ch13_Functional_Language_Features_Iterators_and_Closures.md @@ -507,22 +507,22 @@ fn main() { ``` -## 使用迭代器对条目系列进行处理 +## 使用迭代器处理系列条目 **Processing a Series of Items with Iterators** -迭代器模式,实现了在条目序列上依次执行某些任务。迭代器负责着对各个条目进行遍历,及判断序列在什么时候结束的逻辑。在运用迭代器时,就不必自己再实现那样的逻辑了。 +迭代器模式,the iterator pattern, 实现了在条目序列上,依次执行某个任务。迭代器负责对各个条目遍历,及判断序列何时结束的逻辑。咱们运用了迭代器后,就不必自己再实现那个逻辑。 -在 Rust 中,迭代器是 *惰性的(lazy)*,即在调用那些消费该迭代器以用完他之前,他们是没有效果的。比如,下面清单 13-10 中的代码就通过调用定义在 `Vec` 上的 `iter` 方法,而创建出了一个在那个矢量 `v1` 中各个条目上的迭代器。此代码本身并不会执行任何有用的事情。 +在 Rust 中,迭代器是 *惰性的,lazy*,这意味着在咱们调用消费该迭代器的方法,将其用完前,他们没有任何效果。例如,下面清单 13-10 中的代码,通过调用定义在 `Vec` 上的 `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` 循环时,在那个迭代器中的各个元素,就在那个循环的一个个迭代中,被使用了,而这就会打印出各个值。