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ę lambdaMoż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.
Wyzwanie
ŁatwyUtwó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:
- Utworzyć wyrażenie lambda, które wypisuje
Hello from Lambda! - Zapisać tę lambdę w zmiennej, używając słowa kluczowego
auto - Wywołać funkcję lambda, aby ją wykonać
- Utworzyć drugie wyrażenie lambda, które wypisuje
Lambda executed successfully! - 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;
}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
1Wskaźniki i pamięć
Czym jest wskaźnik?Operator pobrania adresuOperator dereferencjiWskaźniki zeroweWskaźniki i tabliceDynamiczne zarządzanie pamięcią za pomocą „new”Zwalnianie pamięci za pomocą „delete”Podsumowanie — ćwiczenia ze wskaźnikami4Mapy (pary klucz–wartość)
Poznajemy std::mapTworzenie mapyOdczytywanie i modyfikowanie wartościSprawdzanie kluczyUsuwanie parIterowanie po mapiePodsumowanie – częstość występowania słów7Zaawansowane funkcje
Przekazywanie przez referencjęWprowadzenie do wyrażeń lambdaWyrażenia lambda z parametramiWyrażenia lambda z wartościami zwracanymiWprowadzenie do rekurencjiRekurencyjny silniaSortowanie za pomocą lambda2Wektory (tablice dynamiczne)
Wprowadzenie do std::vectorTworzenie wektoraDodawanie elementówDostęp do elementówRozmiar wektoraIterowanie za pomocą pętli forPętla for oparta na zakresieUsuwanie elementówPodsumowanie — operacje na wektorach5Projekt: Narzędzie do zarządzania zapasami
Konfiguracja projektuDodawanie i aktualizowanie produktów3Projekt: narzędzie do listy zadań
Przegląd projektuDodawanie zadaniaPoćwicz samodzielnie: Kompilator C++ online