我在理解这个例子中的差异时遇到了一些麻烦:
我想这两个range(..)和iter()是std::iter::Iterator
这样,为什么我可以通过|x|在第一个例子map和filter,但必须把它作为|&x|在第二个例子吗?
use std::iter::AdditiveIterator;
fn main() {
let range1 = range(1,9);
let range2 = [1,2,3,4,5,6,7,8,9];
//indented for easier visualization
let sum1 = range1 .map(| x| x * x).filter(| x| x % 2 == 0).sum();
let sum2 = range2.iter().map(|&x| x * x).filter(|&x| x % 2 == 0).sum();
println!("{}", sum1);
println!("{}", sum2);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
231 次 |
| 最近记录: |