Menu
Coddy logo textTech

Lambdas mit Parametern

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

Nachdem Sie nun die grundlegende Lambda-Syntax verstehen, lassen Sie uns Lambdas nützlicher machen, indem wir Parameter hinzufügen. Genau wie reguläre Funktionen können Lambdas Eingabewerte akzeptieren, mit denen sie arbeiten.

Um Parameter zu einem Lambda hinzuzufügen, platzieren Sie diese in den Klammern nach der Capture-Klausel:

auto addNumbers = [](int a, int b) {
    std::cout << "Sum: " << (a + b) << std::endl;
};

addNumbers(5, 3);  // Gibt aus: Sum: 8

Die Parametersyntax funktioniert genau wie bei regulären Funktionsparametern – Sie geben den Typ gefolgt vom Parameternamen an. Sie können mehrere Parameter durch Kommas getrennt angeben, genau wie oben gezeigt.

Sie können ein Lambda mit Parametern auch sofort aufrufen, ohne es zu speichern:

[](int x, int y) {
    std::cout << "Product: " << (x * y) << std::endl;
}(4, 7);  // Gibt aus: Product: 28

Diese Fähigkeit, Parameter zu akzeptieren, macht Lambdas wesentlich flexibler und wiederverwendbarer, da sie es Ihnen ermöglicht, kleine Funktionen zu erstellen, die bei jedem Aufruf unterschiedliche Eingabewerte verarbeiten können.

challenge icon

Aufgabe

Einfach

Erstellen Sie ein Programm, das Lambda-Ausdrücke mit Parametern demonstriert, indem Sie einen einfachen Taschenrechner bauen, der verschiedene mathematische Operationen ausführt. Diese Herausforderung testet Ihr Verständnis dafür, wie man Lambda-Ausdrücke definiert, die Eingabewerte akzeptieren und mit ihnen arbeiten.

Die folgenden Eingaben werden bereitgestellt:

  • Zwei Ganzzahlen num1 und num2, welche die Zahlen für die Berechnungen darstellen
  • Ein Zeichen operation, das die auszuführende mathematische Operation darstellt

Ihr Programm sollte:

  1. Einen Lambda-Ausdruck namens add erstellen, der zwei Ganzzahl-Parameter entgegennimmt und deren Summe im Format Sum: [result] ausgibt
  2. Einen Lambda-Ausdruck namens subtract erstellen, der zwei Ganzzahl-Parameter entgegennimmt und deren Differenz im Format Difference: [result] ausgibt
  3. Einen Lambda-Ausdruck namens multiply erstellen, der zwei Ganzzahl-Parameter entgegennimmt und deren Produkt im Format Product: [result] ausgibt
  4. Die zwei Zahlen und das Operationszeichen aus der Eingabe lesen
  5. Basierend auf dem Operationszeichen den entsprechenden Lambda-Ausdruck mit den beiden Zahlen aufrufen

Das Operationszeichen ist eines der folgenden:

  • + für Addition (rufen Sie den add Lambda-Ausdruck auf)
  • - für Subtraktion (rufen Sie den subtract Lambda-Ausdruck auf)
  • * für Multiplikation (rufen Sie den multiply Lambda-Ausdruck auf)

Verwenden Sie das folgende exakte Ausgabeformat basierend auf der Operation:

Für Addition:

Sum: [result]

Für Subtraktion:

Difference: [result]

Für Multiplikation:

Product: [result]

Denken Sie daran, dass Lambda-Parameter in den Klammern nach der Capture-Klausel definiert werden, wobei dieselbe Syntax wie bei regulären Funktionsparametern verwendet wird. Speichern Sie jeden Lambda-Ausdruck in einer Variablen mit dem Schlüsselwort auto und rufen Sie dann den entsprechenden Lambda-Ausdruck basierend auf dem eingegebenen Operationszeichen mithilfe einer if-else-Anweisung oder einer switch-Anweisung auf.

Spickzettel

Lambda-Ausdrücke können Parameter akzeptieren, indem diese in Klammern nach der Capture-Klausel platziert werden:

auto addNumbers = [](int a, int b) {
    std::cout << "Sum: " << (a + b) << std::endl;
};

addNumbers(5, 3);  // Gibt aus: Sum: 8

Die Parametersyntax funktioniert genau wie bei regulären Funktionsparametern – geben Sie den Typ gefolgt vom Parameternamen an. Mehrere Parameter werden durch Kommas getrennt.

Sie können ein Lambda mit Parametern auch sofort aufrufen, ohne es zu speichern:

[](int x, int y) {
    std::cout << "Product: " << (x * y) << std::endl;
}(4, 7);  // Gibt aus: Product: 28

Probier es selbst

#include <iostream>
using namespace std;

int main() {
    // Eingabe lesen
    int num1, num2;
    char operation;
    cin >> num1 >> num2 >> operation;
    
    // TODO: Lambda-Ausdrücke für Additions-, Subtraktions- und Multiplikationsoperationen erstellen
    // TODO: if-else- oder switch-Anweisung verwenden, um das entsprechende Lambda basierend auf der Operation aufzurufen
    
    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