問題一覧に戻る
中級データ構造
問題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);
}