問題一覧に戻る
中級クロージャ
問題75: クロージャ基礎

クロージャは環境をキャプチャできる無名関数です。||構文でクロージャを作成し、オプションでパラメータを指定できます。変数を参照、可変参照、値でキャプチャできます。コールバック、イテレータ、関数型プログラミングパターンに強力です。Rustは安全性と効率性のためキャプチャモードを推論します。

fn main() {
let x = 10;

// シンプルなクロージャ
let add_one = x + 1;

// パラメータ付き
let multiply = |a b| * ;

// 環境のキャプチャ
let y = 5;
let add_xy = + ;

println!("{}", add_one());
println!("{}", multiply(3, 4));
println!("{}", add_xy());

// 可変キャプチャ
let mut counter = 0;
let mut increment = {
counter 1;
counter
};

println!("{}", increment());
println!("{}", increment());
}