Rustのイテレータには、非常に強力なメソッドがいくつかあります。その中で fold
メソッドは、イテレータの各要素を畳み込んで単一の値を生成するためのメソッドです。
fold
メソッドは、初期値とクロージャ(または関数)を引数として取ります。初期値は畳み込み操作の初期状態を定義し、クロージャ(または関数)は畳み込み操作を実行するロジックを指定します。このクロージャは畳み込み操作によって生成される中間結果とイテレータの各要素を受け取り、新しい中間結果を返します。最終的に、イテレータのすべての要素が畳み込まれ、最終結果が得られます。
Iterator.fold(初期値, |前回のデータ,要素の値|計算式)
fn main() {
let numbers = vec![1, 2, 3, 4, 5];
let sum = numbers.iter().fold(0, |acc, x| acc + x);
println!("Sum: {}", sum); // Output: Sum: 15
}
この例では、numbers
ベクタの各要素を fold
メソッドを使って畳み込んでいます。初期値は 0
で、クロージャ |acc, x| acc + x
は畳み込みのロジックを表しています。このクロージャは、各要素を現在の総計 acc
に加えて新しい総計を返します。最終的に、イテレータの要素がすべて畳み込まれ、最終結果として 15
が得られます。