問題一覧に戻る
中級データ構造
問題77: イテレータメソッド
イテレータはデータ変換のための強力なメソッドを提供します。mapは各要素を変換し、filterは条件に基づいて要素を選択し、foldは値を累積します。メソッドチェーンにより関数型プログラミングパターンが可能になり、コードがより表現力豊かで簡潔になります。これらのメソッドは遅延評価され、collectなどの終端操作で実行されます。
fn main() {
let nums = vec![1, 2, 3, 4, 5];
// mapメソッド
let doubled: Vec<i32> = nums.iter()
.(|x| x * 2)
.();
// filterメソッド
let evens: Vec<i32> = nums.iter()
.(|x| x % 2 == 0)
.(|x| *x)
.collect();
// foldメソッド
let sum = nums.iter()
.(0, |acc, x| acc + x);
// メソッドチェイン
let result: Vec<i32> = nums.iter()
.map(|x| x * 2)
.(|x| x > 5)
.(|x| x - 1)
.();
println!("{:?}", doubled);
println!("{:?}", evens);
println!("{}", sum);
println!("{:?}", result);
}