Lambda-Functies
Veeg om het menu te tonen
Lambda-functies, of anonieme functies, zijn een functie waarmee je kleine, naamloze functies direct in je code kunt maken. Ze zijn vooral handig wanneer je een eenvoudige functie voor een korte periode nodig hebt en geen aparte benoemde functie wilt definiëren.
Lambda-functies zijn om verschillende redenen nuttig:
Lambda-functies maken het mogelijk om korte en beknopte code te schrijven. Ze zijn ideaal voor bewerkingen die in een paar regels kunnen worden uitgedrukt.
Ze kunnen variabelen uit de omliggende scope vastleggen, waardoor je variabelen uit de bovenliggende functie binnen de lambda kunt gebruiken.
Lambdas kunnen als argumenten aan andere functies worden doorgegeven, wat ze handig maakt voor functies zoals std::for_each, std::sort, enz.
Hoe maak je een lambda-functie?
Je kunt de volgende syntaxis gebruiken om een lambda-functie te maken.
lambda_function.h
123[capture_clause](parameter_list) -> return_type { // function body }
Een capture clause in een lambda-functie geeft aan welke variabelen uit de omliggende scope (buiten de lambda-functie) toegankelijk zijn en gebruikt kunnen worden binnen de lambda-functie. Er zijn 3 veelvoorkomende typen capture clauses:
-
Niets vastleggen
[]: de lambda-functie heeft geen toegang tot variabelen uit de omliggende scope; -
Specifieke variabelen vastleggen op waarde
[var1, var2, ...]: de lambda-functie heeft toegang tot specifieke variabelen uit de omliggende scope op waarde; -
Specifieke variabelen vastleggen via referentie
[&var1, &var2, ...]: de lambda-functie heeft toegang tot specifieke variabelen uit de omliggende scope via referentie.
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; }
De functie is als volgt opgebouwd:
-
De lambda-functie vangt de variabele
multiplierop via referentie[&multiplier]; -
Het retourtype
-> intgeeft aan dat de lambda-functie een integer retourneert; -
De lambda wordt direct aangeroepen met het argument
5, en het resultaat wordt opgeslagen in de variabeleresult.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.