スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

C++のラムダ式でクロージャ

なぜかGoogle先生で「C++ クロージャ」を検索してもあまり簡易な説明が出てこなかったので、
「簡易な説明」を書こうと思いましたよ。

ここは「クロージャ」の概念を何か勘違いした筆者の恥晒しの場です。
鵜呑みにしないでください。


なおクロージャとは「レキシカルなスコープを持つ関数」のことです。
int main(){
int i = 10;
auto func = [&](){ return i+i; };
}

int main(){
int i = 10;
auto func = [&](){ i = 20; };
}

このような「関数の外界に干渉や読み取りを行うことのできる関数」を言います。
(ちなみにC++での参照キャプチャは推奨されていません。)




以下鵜呑みにしてはいけないゾーン。




この記事でわかること
・C++でのクロージャの方法(簡易)
・C++でのラムダ式の使い方(簡易)


クロージャ、これだけです。
int main(){
int i = []{ return 10; }();
cout << i << endl; // 10
}



Oh, The Closure...
It's so Beautiful...。



参考にさせていただいたサイトは
http://cpplover.blogspot.jp/2009/11/lambda.html
様です。
ありがとうございます!


以下ラムダ式のなんとなく的補足。

[]{
/* 処理 */
};

がラムダ式と言われるもので、
しばしば無名関数と呼ばれます。
つまり関数です。
これに「()」をつけることで実行してます。
関数だって()つけると実行されるじゃん。ねっ。

[]{
cout << "これでこれが出力されます。" << endl;
}();

ねっ☆

スポンサーサイト

コメント

非公開コメント
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。