Menu
Coddy logo textTech

Wyrażenia lambda z parametrami

Część sekcji Logika i przepływ programu ścieżki C++ w Coddy. Lekcja 43 z 56.

Skoro znasz już podstawową składnię lambd, sprawmy, by były bardziej użyteczne, dodając parametry. Podobnie jak zwykłe funkcje, lambdy mogą przyjmować wartości wejściowe, na których będą działać.

Aby dodać parametry do lambdy, umieść je w nawiasach po klauzuli przechwytywania:

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

addNumbers(5, 3);  // Wypisuje: Sum: 8

Składnia parametrów działa dokładnie tak samo jak w przypadku zwykłych parametrów funkcji — podajesz typ, a następnie nazwę parametru. Możesz mieć wiele parametrów oddzielonych przecinkami, tak jak pokazano powyżej.

Możesz też od razu wywołać lambdę z parametrami, bez jej zapisywania:

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

Ta możliwość przyjmowania parametrów sprawia, że lambdy są znacznie bardziej elastyczne i wielokrotnego użytku, pozwalając tworzyć małe funkcje, które mogą przetwarzać różne wartości wejściowe przy każdym wywołaniu.

challenge icon

Wyzwanie

Łatwy

Utwórz program, który demonstruje wyrażenia lambda z parametrami, budując prosty kalkulator wykonujący różne operacje matematyczne. To wyzwanie sprawdzi, czy rozumiesz, jak definiować wyrażenia lambda, które przyjmują wartości wejściowe i wykonują na nich operacje.

Podane zostaną następujące dane wejściowe:

  • Dwie liczby całkowite num1 i num2, reprezentujące liczby używane w obliczeniach
  • Znak operation, reprezentujący operację matematyczną do wykonania

Twój program powinien:

  1. Utworzyć wyrażenie lambda o nazwie add, które przyjmuje dwa parametry całkowite i wypisuje ich sumę w formacie Sum: [result]
  2. Utworzyć wyrażenie lambda o nazwie subtract, które przyjmuje dwa parametry całkowite i wypisuje ich różnicę w formacie Difference: [result]
  3. Utworzyć wyrażenie lambda o nazwie multiply, które przyjmuje dwa parametry całkowite i wypisuje ich iloczyn w formacie Product: [result]
  4. Odczytać z wejścia dwie liczby i znak operacji
  5. Na podstawie znaku operacji wywołać odpowiednie wyrażenie lambda, przekazując mu te dwie liczby

Znakiem operacji będzie jeden z następujących:

  • + dla dodawania (wywołaj wyrażenie lambda add)
  • - dla odejmowania (wywołaj wyrażenie lambda subtract)
  • * dla mnożenia (wywołaj wyrażenie lambda multiply)

Użyj następującego dokładnego formatu wyjściowego, zależnie od operacji:

Dodawanie:

Sum: [result]

Odejmowanie:

Difference: [result]

Mnożenie:

Product: [result]

Pamiętaj, że parametry wyrażenia lambda definiuje się w nawiasach po klauzuli przechwytywania, używając tej samej składni co w przypadku zwykłych parametrów funkcji. Przypisz każde wyrażenie lambda do zmiennej, używając słowa kluczowego auto, a następnie wywołaj odpowiednie wyrażenie lambda na podstawie znaku operacji z wejścia, używając instrukcji if-else lub switch.

Spróbuj swoich sił

#include <iostream>
using namespace std;

int main() {
    // Odczytaj dane wejściowe
    int num1, num2;
    char operation;
    cin >> num1 >> num2 >> operation;
    
    // TODO: Utwórz wyrażenia lambda dla operacji dodawania, odejmowania i mnożenia
    // TODO: Użyj instrukcji if-else lub switch, aby wywołać odpowiednią lambdę na podstawie operation
    
    return 0;
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator C++ online