Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Funzioni Lambda | Alcuni Argomenti Avanzati
Funzioni in C++

Funzioni Lambda

Scorri per mostrare il menu

Le funzioni lambda, o funzioni anonime, sono una caratteristica che permette di creare piccole funzioni senza nome direttamente nel codice. Sono particolarmente utili quando è necessaria una funzione semplice per un breve periodo di tempo e non si desidera definire una funzione con nome separata.

Le funzioni lambda sono utili per diversi motivi:

Sinteticità
expand arrow

Le funzioni lambda permettono di scrivere codice breve e conciso. Sono ideali per operazioni che possono essere espresse in poche righe.

Scope locale
expand arrow

Possono catturare variabili dallo scope circostante, consentendo di utilizzare variabili della funzione genitore all'interno della lambda.

Flessibilità
expand arrow

Le lambda possono essere passate come argomenti ad altre funzioni, risultando utili per funzioni come std::for_each, std::sort, ecc.

Come creare una funzione lambda?

È possibile utilizzare la seguente sintassi per creare una funzione lambda.

lambda_function.h

lambda_function.h

123
[capture_clause](parameter_list) -> return_type { // function body }

Una clausola di cattura in una funzione lambda consente di specificare quali variabili dall'ambito circostante (al di fuori della funzione lambda) possono essere accessibili e utilizzate all'interno della funzione lambda. Esistono 3 tipi comuni di clausole di cattura:

  • Non catturare nulla []: la funzione lambda non può accedere a nessuna variabile dall'ambito circostante;

  • Catturare variabili specifiche per valore [var1, var2, ...]: la funzione lambda può accedere a variabili specifiche dall'ambito circostante per valore;

  • Catturare variabili specifiche per riferimento [&var1, &var2, ...]: la funzione lambda può accedere a variabili specifiche dall'ambito circostante per riferimento.

main.cpp

main.cpp

1234567891011121314
#include <iostream> int main() { int multiplier = 2; // Lambda function capturing `multiplier` by reference // With explicit return type (`int`) int result = [&multiplier](int num) -> int { return num * num * multiplier; }(5); // Invoking the lambda with argument 5 std::cout << result << std::endl; }

La funzione è costruita come segue:

  • La funzione lambda cattura la variabile multiplier per riferimento [&multiplier];

  • Il tipo di ritorno -> int specifica che la funzione lambda restituisce un intero;

  • La lambda viene invocata immediatamente con l'argomento 5 e il risultato viene memorizzato nella variabile result.

question mark

Qual è lo scopo di una clausola di cattura in una funzione lambda?

Seleziona la risposta corretta

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 4

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Sezione 4. Capitolo 4
some-alt