Menu
Coddy logo textTech

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 lambda

Puoi 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.

challenge icon

Sfida

Facile

Crea 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:

  1. Creare un’espressione lambda che stampi Hello from Lambda!
  2. Memorizzare questa lambda in una variabile usando la parola chiave auto
  3. Chiamare la funzione lambda per eseguirla
  4. Creare una seconda espressione lambda che stampi Lambda executed successfully!
  5. 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;
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore C++ online