Menu
Coddy logo textTech

ラムダ式入門

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 に便利です。コードをより簡潔にし、関連するロジックを近くにまとめておけます。

challenge icon

チャレンジ

簡単

lambda式の基本的な構文とexecutionを示すプログラムを作成してください。このチャレンジでは、パラメーターなしの単純なlambda functionを定義して呼び出す方法についての理解を確認します。

プログラムでは、次のことを行ってください。

  1. Hello from Lambda!をprintsするlambda式をCreateする
  2. auto keywordをusingして、このlambdaをvariableにStoreする
  3. lambda functionをCallして実行する
  4. Lambda executed successfully!をprintsするsecond lambda expressionをCreateする
  5. この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;
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

論理と制御フローのすべてのレッスン

自分で練習してみよう: C++オンラインコンパイラ