ラムダ式入門
CoddyのC++ジャーニー「論理と制御フロー」セクションの一部。レッスン 42/56。
Lambda expression は、必要な場所で小さく匿名の function を作成できる、強力な C++ の機能です。これらは、別個の function 宣言を書かずに定義して使用できるミニ function のようなものだと考えてください。
ラムダ式の基本構文は、次のパターンに従います:[](){}。角括弧 [] はキャプチャ句と呼ばれ、丸括弧 () にはパラメーターが入り(通常の関数と同様)、波括弧 {} には関数本体が含まれます。
キャプチャ句は、ラムダが周囲のスコープから使用できる変数を制御します。最も一般的な形式は次のとおりです:
[=]:すべてのローカル変数を値渡しでキャプチャする(ラムダは独自のコピーを取得します)[&]:すべてのローカル変数を参照渡しでキャプチャする(ラムダは元の変数にアクセスします)[]:何もキャプチャしない(ラムダは外部の変数を使用できません)シンプルなラムダを作成して呼び出す方法は次のとおりです。
auto myLambda = []() {
std::cout << "Hello from Lambda!" << std::endl;
};
myLambda(); // ラムダ関数を呼び出すlambda を定義して、variable に storing することなく、immediately 実行することもできます:
[]() {
std::cout << "Immediate execution!" << std::endl;
}();ラムダ式は、特に個別に定義したくない短い一度限りの function に便利です。コードをより簡潔にし、関連するロジックを近くにまとめておけます。
チャレンジ
簡単lambda式の基本的な構文とexecutionを示すプログラムを作成してください。このチャレンジでは、パラメーターなしの単純なlambda functionを定義して呼び出す方法についての理解を確認します。
プログラムでは、次のことを行ってください。
Hello from Lambda!をprintsするlambda式をCreateするautokeywordをusingして、このlambdaをvariableにStoreする- lambda functionをCallして実行する
Lambda executed successfully!をprintsするsecond lambda expressionをCreateする- このsecond lambdaをvariableにStoreせずにimmediately Executeする
次のexactな出力形式を使用してください。
Hello from Lambda!
Lambda executed successfully!lambda expressionsでは、[](){}という構文を使用します。角かっこ[]はcapture clause、丸かっこ()はparameters(このチャレンジでは空)、波かっこ{}はfunction bodyを含みます。auto variableName = [](){...};をusingしてlambdaをvariableにStoreし、その後variableName();でCallできます。immediate executionには、[](){...}();という構文を使用できます。これは、1つのstatementでlambdaを定義してCallします。
自分で試してみよう
#include <iostream>
using namespace std;
int main() {
// TODO: 以下にコードを書いてください
// Create a lambda expression that prints "Hello from Lambda!"
// autoキーワードを使って変数に格納する
// ラムダ関数を呼び出す
// Create a second lambda that prints "Lambda executed successfully!"
// 変数に格納せずにすぐに実行する
return 0;
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
論理と制御フローのすべてのレッスン
自分で練習してみよう: C++オンラインコンパイラ