Rust - 迭代all, any, filter, find差別
迭代all, any, filter, find
我覺得迭代裡面有四個很像
all[1], any[2], filter[3], find[4]
差別的地方有幾個
all和any輸出是bool,為true或false
filter會輸出一個迭代器
find輸出一個元素
例子
假設我有一組數組
閉包條件都是判斷是否為偶數
結果會長這樣
fn main() {
let data = vec![2, 4, 6, 8, 10, 11, 12, 14, 16, 18, 20];
let all_res = data.iter().all(|x| x % 2 == 0);
let any_res = data.iter().any(|x| x % 2 == 0);
let filter_res = data.iter().filter(|x| *x % 2 == 0).collect::<Vec<_>>();
let find_res = data.iter().find(|x| *x % 2 == 0).unwrap();
println!("all: {}", all_res);
println!("any: {}", any_res);
println!("filter: {:?}", filter_res);
println!("find: {}", find_res);
}
all: false
any: true
filter: [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
find: 2all會判斷是否數組內所有元素都滿足條件,因為數組有奇數所以不符合
any會判斷是否數組內至少一個元素滿足條件,只要一個就會true
filter會將所有數組內滿足條件的輸出,因此除了奇數以外都會輸出
find則是會輸出第一個滿足條件的元素,也就是2
參考資料
[1] https://lageeblog.blogspot.com/2024/01/rust-all.html
[2] https://lageeblog.blogspot.com/2024/01/rust-any.html
[3] https://lageeblog.blogspot.com/2023/10/rust-filter.html
[4] https://lageeblog.blogspot.com/2023/10/rust-find.html
0 comments:
張貼留言