Menu
Coddy logo textTech

Einführung in Lambda-Ausdrücke

Teil des Abschnitts Logik & Ablauf der C++-Journey von Coddy — Lektion 42 von 56.

Lambda-Ausdrücke sind ein leistungsstarkes C++-Feature, das es Ihnen ermöglicht, kleine, anonyme Funktionen genau dort zu erstellen, wo Sie sie benötigen. Betrachten Sie sie als Mini-Funktionen, die Sie definieren und verwenden können, ohne eine separate Funktionsdeklaration schreiben zu müssen.

Die grundlegende Syntax für einen Lambda-Ausdruck folgt diesem Muster: [](){}. Die eckigen Klammern [] werden als Capture-Clause bezeichnet, die runden Klammern () enthalten Parameter (genau wie bei regulären Funktionen), und die geschweiften Klammern {} enthalten den Funktionsrumpf.


Die Capture-Clause steuert, welche Variablen aus dem umgebenden Gültigkeitsbereich das Lambda verwenden kann. Die gebräuchlichsten Formen sind:

[=] — erfasst alle lokalen Variablen als Wert (das Lambda erhält eine eigene Kopie)
[&] — erfasst alle lokalen Variablen als Referenz (das Lambda greift auf die Originale zu)
[] — erfasst nichts (das Lambda kann keine externen Variablen verwenden)

So erstellen und rufen Sie ein einfaches Lambda auf:

auto myLambda = []() {
    std::cout << "Hello from Lambda!" << std::endl;
};

myLambda();  // Die Lambda-Funktion aufrufen

Sie können ein Lambda auch sofort definieren und ausführen, ohne es in einer Variablen zu speichern:

[]() {
    std::cout << "Immediate execution!" << std::endl;
}();

Lambda-Ausdrücke sind besonders nützlich für kurze, einmalige Funktionen, die Sie nicht separat definieren möchten. Sie machen Ihren Code prägnanter und halten zusammengehörige Logik nah beieinander.

challenge icon

Aufgabe

Einfach

Erstellen Sie ein Programm, das die grundlegende Syntax und Ausführung von Lambda-Ausdrücken demonstriert. Diese Herausforderung testet Ihr Verständnis dafür, wie man einfache Lambda-Funktionen ohne Parameter definiert und aufruft.

Ihr Programm sollte:

  1. Einen Lambda-Ausdruck erstellen, der Hello from Lambda! ausgibt
  2. Dieses Lambda unter Verwendung des Schlüsselworts auto in einer Variablen speichern
  3. Die Lambda-Funktion aufrufen, um sie auszuführen
  4. Einen zweiten Lambda-Ausdruck erstellen, der Lambda executed successfully! ausgibt
  5. Dieses zweite Lambda sofort ausführen, ohne es in einer Variablen zu speichern

Verwenden Sie das folgende exakte Ausgabeformat:

Hello from Lambda!
Lambda executed successfully!

Denken Sie daran, dass Lambda-Ausdrücke die Syntax [](){} verwenden, wobei die eckigen Klammern [] die Capture-Klausel sind, die runden Klammern () Parameter enthalten (leer für diese Herausforderung) und die geschweiften Klammern {} den Funktionskörper enthalten. Sie können ein Lambda in einer Variablen speichern, indem Sie auto variableName = [](){...}; verwenden, und es dann mit variableName(); aufrufen. Für die sofortige Ausführung können Sie die Syntax [](){...}(); verwenden, die das Lambda in einer Anweisung definiert und aufruft.

Spickzettel

Lambda-Ausdrücke sind anonyme Funktionen, die inline definiert werden können. Sie verwenden die Syntax [](){}, wobei:

  • [] - Capture-Klausel (steuert den Zugriff auf äußere Variablen)
  • () - Parameter
  • {} - Funktionsrumpf

Gängige Formen der Capture-Klausel:

  • [] - nichts erfassen
  • [=] - alle äußeren Variablen per Wert erfassen
  • [&] - alle äußeren Variablen per Referenz erfassen

Einen Lambda-Ausdruck speichern und aufrufen:

auto myLambda = []() {
    std::cout << "Hello from Lambda!" << std::endl;
};

myLambda();  // Die Lambda-Funktion aufrufen

Einen Lambda-Ausdruck sofort ausführen:

[]() {
    std::cout << "Immediate execution!" << std::endl;
}();

Probier es selbst

#include <iostream>
using namespace std;

int main() {
    // TODO: Schreiben Sie Ihren Code unten
    // Erstellen Sie einen Lambda-Ausdruck, der "Hello from Lambda!" ausgibt
    // Speichern Sie ihn in einer Variablen mit dem Schlüsselwort auto
    
    // Rufen Sie die Lambda-Funktion auf
    
    // Erstellen Sie ein zweites Lambda, das "Lambda executed successfully!" ausgibt
    // Führen Sie es sofort aus, ohne es in einer Variablen zu speichern
    
    return 0;
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf