Introduzione alle espressioni lambda
Fa parte della sezione Logica e flusso del percorso C++ di Coddy. Lezione 42 di 56.
Le espressioni lambda sono una potente funzionalità di C++ che ti permette di creare piccole funzioni anonime proprio dove ti servono. Pensale come mini-funzioni che puoi definire e usare senza dover scrivere una dichiarazione di funzione separata.
La sintassi di base di un’espressione lambda segue questo schema: [](){}. Le parentesi quadre [] sono chiamate clausola di cattura, le parentesi tonde () contengono i parametri (proprio come le funzioni normali) e le parentesi graffe {} contengono il corpo della funzione.
La clausola di cattura controlla quali variabili dell’ambito circostante può usare la lambda. Le forme più comuni sono:
[=]: cattura tutte le variabili locali per valore (la lambda ottiene una propria copia)[&]: cattura tutte le variabili locali per riferimento (la lambda accede agli originali)[]: non cattura nulla (la lambda non può usare variabili esterne)Ecco come creare e chiamare una semplice lambda:
auto myLambda = []() {
std::cout << "Hello from Lambda!" << std::endl;
};
myLambda(); // Chiama la funzione lambdaPuoi anche definire ed eseguire immediatamente una lambda senza memorizzarla in una variabile:
[]() {
std::cout << "Immediate execution!" << std::endl;
}();Le espressioni lambda sono particolarmente utili per le funzioni brevi e occasionali che non vuoi definire separatamente. Rendono il tuo codice più conciso e mantengono vicine le logiche correlate.
Sfida
FacileCrea un programma che mostri la sintassi di base e l’esecuzione delle espressioni lambda. Questa sfida metterà alla prova la tua comprensione di come definire e chiamare semplici funzioni lambda senza parametri.
Il tuo programma dovrebbe:
- Creare un’espressione lambda che stampi
Hello from Lambda! - Memorizzare questa lambda in una variabile usando la parola chiave
auto - Chiamare la funzione lambda per eseguirla
- Creare una seconda espressione lambda che stampi
Lambda executed successfully! - Eseguire subito questa seconda lambda senza memorizzarla in una variabile
Usa il seguente formato di output esatto:
Hello from Lambda!
Lambda executed successfully!Ricorda che le espressioni lambda usano la sintassi [](){}, in cui le parentesi quadre [] sono la clausola di cattura, le parentesi tonde () contengono i parametri (vuote per questa sfida) e le parentesi graffe {} contengono il corpo della funzione. Puoi memorizzare una lambda in una variabile usando auto variableName = [](){...}; e poi chiamarla con variableName();. Per eseguirla immediatamente, puoi usare la sintassi [](){...}();, che definisce e chiama la lambda in un’unica istruzione.
Provalo tu
#include <iostream>
using namespace std;
int main() {
// TODO: Scrivi il tuo codice qui sotto
// Crea un'espressione lambda che stampi "Hello from Lambda!"
// Memorizzala in una variabile usando la parola chiave auto
// Chiama la funzione lambda
// Crea una seconda lambda che stampi "Lambda executed successfully!"
// Eseguila immediatamente senza memorizzarla in una variabile
return 0;
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Puntatori e memoria
Che cos'è un puntatore?Operatore indirizzoOperatore di dereferenziazionePuntatori nulliPuntatori e arrayMemoria dinamica con 'new'Liberare la memoria con 'delete'Riepilogo - Esercizi sui puntatori4Mappe (coppie chiave-valore)
Introduzione a std::mapCreare una mappaAccedere ai valori e modificarliVerificare la presenza di chiaviRimuovere coppieIterare su una mappaRiepilogo - Frequenza delle parole7Funzioni avanzate
Passaggio per riferimentoIntroduzione alle espressioni lambdaLambda con parametriLambda con valori di ritornoIntroduzione alla ricorsioneFattoriale ricorsivoOrdinamento con lambda2Vettori (array dinamici)
Introduzione a std::vectorCreare un vettoreAggiungere elementiAccedere agli elementiDimensione del vettoreIterare con un ciclo forCiclo for basato su intervalloRimuovere elementiRiepilogo - Operazioni sui vettori5Progetto: strumento per l’inventario
Configurazione del progettoAggiunta e aggiornamento degli articoli3Progetto: Strumento per l’elenco delle attività
Panoramica del progettoAggiungere un’attivitàEsercitati da solo: Compilatore C++ online