LoginSignup
1
0

クロージャー(Closure)って何? (Rust)

Last updated at Posted at 2024-03-20

処理長くなってちょっとまとめたいなって時にないですか?
でも関数起こすのめんどいなー。
変数受け渡し用の引数定義するのめんどうだし。。

そんなときに、関数の中で同じ処理まとめちゃう時に便利なのがクロージャー!

クロージャー:関数みたいに処理まとめられてその親スコープの変数も使えちゃうやーつ

※クロージャーってのは閉じたものみたいな意味で
関数の中に閉じ込められているからこんな名前になっていると思われる。

こんな感じで使います
shori関数の中で変数soto_hensuを定義しといてクロージャーの中で呼び出す)

fn shori(){
    let soto_hensu = "処理の外から来た変数だよ";

    //これがクロージャー
    let closure_dayo = |namae| {
        println!("{}さんこんにちは",namae);
        println!("{}",soto_hensu);
    };

    //実際クロージャーを使っているところ
    closure_dayo("たろう");
    closure_dayo("ほげた");
}

fn main() {
    //メインで実行
    shori();
}

実行結果

たろうさんこんにちは
処理の外から来た変数だよ
ほげたさんこんにちは
処理の外から来た変数だよ

クロージャーのフォーマット

|<引数1>,<引数2>|{<処理>}

みたいな感じで引数を|(パイプ)で囲んで渡します。
あとは普通の関数と変わらない。

関数と違って自分のスコープじゃない外の変数も使えるので
ちょっと使いたき時に便利ですね。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0