Rust 迭代step_by概述 - 用於迭代器遞增值
step_by
step_by為建立一個同樣起點的迭代器
但會根據指定數值遞增
例如for迴圈想要等差值為2
就很適合用step_by
文件[1]這樣描述
fn step_by(self, step: usize) -> StepBy<Self>
where
Self: Sized,
self為本身迭代器
step為遞增值
最後回傳StepBy迭代器
Python例子
在Python中
如果要用for迴圈把0 2 4 6 8給印出來
通常會這樣
for i in range(0,10,2):
print("Numbers: ", i)
Numbers: 0
Numbers: 2
Numbers: 4
Numbers: 6
Numbers: 8
Rust實現
透過range設定最小值0以及最大值10,最後一個數字2表示遞增值
因此可以每兩個數字印出來
而這種打法在Rust則是這樣打
for i in (0..10).step_by(2){
println!("Numbers: {}", i);
}
Numbers: 0
Numbers: 2
Numbers: 4
Numbers: 6
Numbers: 8
例子
而step_by也可以用在iter上
應該說他本來就是被歸類在iter
假設有一個沒有規律的數組
希望每兩個取一個
則可以這樣
let list = vec![0, 5, 8, 6, 7, 5, 3, 9, 4];
let res = list.iter().step_by(2).collect::<Vec<_>>();
println!("res: {:?}", res);
第一行為數組
第二行將數組放入迭代器iter()中
透過step_by(2)每兩個取一個,最後放入一個數組中
將其println!出來可以看到結果為
res: [0, 8, 7, 3, 4]
參考資料
[1] https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.step_by
0 comments:
張貼留言