Menu
Coddy logo textTech

Wprowadzenie do wyrażeń lambda

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

Wyrażenia lambda to potężna funkcja języka C++, która pozwala tworzyć małe, anonimowe funkcje dokładnie tam, gdzie ich potrzebujesz. Możesz myśleć o nich jak o miniaturowych funkcjach, które możesz definiować i używać bez konieczności pisania osobnej deklaracji funkcji.

Podstawowa składnia wyrażenia lambda ma następującą postać: [](){}. Nawiasy kwadratowe [] nazywane są klauzulą przechwytywania, nawiasy okrągłe () zawierają parametry (tak jak w zwykłych funkcjach), a nawiasy klamrowe {} zawierają ciało funkcji.


Klauzula przechwytywania określa, których zmiennych z otaczającego zakresu lambda może używać. Najczęściej stosowane formy to:

[=]: przechwytywanie wszystkich zmiennych lokalnych przez wartość (lambda otrzymuje własną kopię)
[&]: przechwytywanie wszystkich zmiennych lokalnych przez referencję (lambda uzyskuje dostęp do oryginałów)
[]: brak przechwytywania (lambda nie może używać żadnych zmiennych z zewnątrz)

Oto jak utworzyć i wywołać prostą lambdę:

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

myLambda();  // Wywołaj funkcję lambda

Możesz też zdefiniować i od razu wykonać lambdę bez zapisywania jej w zmiennej:

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

Wyrażenia lambda są szczególnie przydatne w przypadku krótkich, jednorazowych funkcji, których nie chcesz definiować osobno. Dzięki nim kod jest bardziej zwięzły, a powiązana logika pozostaje blisko siebie.

challenge icon

Wyzwanie

Łatwy

Utwórz program, który demonstruje podstawową składnię i wykonywanie wyrażeń lambda. To wyzwanie sprawdzi, czy rozumiesz, jak definiować i wywoływać proste funkcje lambda bez parametrów.

Twój program powinien:

  1. Utworzyć wyrażenie lambda, które wypisuje Hello from Lambda!
  2. Zapisać tę lambdę w zmiennej, używając słowa kluczowego auto
  3. Wywołać funkcję lambda, aby ją wykonać
  4. Utworzyć drugie wyrażenie lambda, które wypisuje Lambda executed successfully!
  5. Wykonać tę drugą lambdę natychmiast, bez zapisywania jej w zmiennej

Użyj dokładnie następującego formatu wyjściowego:

Hello from Lambda!
Lambda executed successfully!

Pamiętaj, że wyrażenia lambda używają składni [](){}, w której nawiasy kwadratowe [] są klauzulą przechwytywania, nawiasy okrągłe () zawierają parametry (w tym wyzwaniu są puste), a nawiasy klamrowe {} zawierają treść funkcji. Możesz zapisać lambdę w zmiennej, używając auto variableName = [](){...};, a następnie wywołać ją za pomocą variableName();. Aby wykonać ją natychmiast, możesz użyć składni [](){...}();, która definiuje i wywołuje lambdę w jednej instrukcji.

Spróbuj swoich sił

#include <iostream>
using namespace std;

int main() {
    // TODO: Napisz swój kod poniżej
    // Utwórz wyrażenie lambda, które wypisuje "Hello from Lambda!"
    // Zapisz je w zmiennej, używając słowa kluczowego auto
    
    // Wywołaj funkcję lambda
    
    // Utwórz drugie wyrażenie lambda, które wypisuje "Lambda executed successfully!"
    // Wykonaj je od razu, nie zapisując go w zmiennej
    
    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