ラムダ式入門
CoddyのC++ジャーニー「論理と制御フロー」セクションの一部。レッスン 42/56。
Lambda式は、必要な場所で小さな匿名の function を作成できる強力な C++ の機能です。別個の function 宣言を書かなくても定義して使用できるミニ function と考えてください。
lambda expression の基本的な構文は、次のパターンに従います:[](){}。角括弧 [] はcapture clauseと呼ばれ、丸括弧 () にはパラメーターが入り(通常の function と同様)、波括弧 {} には function body が含まれます。
capture clause は、lambda が周囲のスコープからどの variable を使用できるかを制御します。最も一般的な形式は次のとおりです:
[=] — すべての local variable を値によってキャプチャする(lambda は独自の copy を取得します)[&] — すべての local variable を参照によってキャプチャする(lambda は元のものにアクセスします)[] — 何もキャプチャしない(lambda は外部の variable を使用できません)ここでは、単純なラムダを作成して呼び出す方法を説明します。
auto myLambda = []() {
std::cout << "Hello from Lambda!" << std::endl;
};
myLambda(); // ラムダ関数を呼び出すlambda を immediately に定義して実行し、without storing it in a variable で済ませることもできます。
[]() {
std::cout << "Immediate execution!" << std::endl;
}();Lambda expressionは、個別に定義したくない短い一度限りのfunctionに特に便利です。コードをより簡潔にし、関連するロジックを近くにまとめておけます。
チャレンジ
簡単ラムダ式の基本的な構文と実行を示すプログラムを作成してください。この課題では、パラメーターなしの単純なラムダ関数を定義して呼び出す方法の理解度を確認します。
プログラムでは、次のことを行ってください。
Hello from Lambda!を出力するラムダ式を作成するautoキーワードを使用して、このラムダを変数に格納する- ラムダ関数を呼び出して実行する
Lambda executed successfully!を出力する2つ目のラムダ式を作成する- この2つ目のラムダを変数に格納せずに直ちに実行する
次の正確な出力形式を使用してください。
Hello from Lambda!
Lambda executed successfully!ラムダ式では、[](){}という構文を使用します。角括弧[]はキャプチャ節、丸括弧()はパラメーター(この課題では空)を保持し、中括弧{}には関数本体を記述します。auto variableName = [](){...};を使用してラムダを変数に格納し、その後variableName();で呼び出すことができます。直ちに実行するには、[](){...}();という構文を使用します。これにより、1つの文でラムダを定義して呼び出せます。
自分で試してみよう
#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++オンラインコンパイラ