問題一覧に戻る
中級クロージャ
問題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());
}