Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Lambda-Functies | Enkele Geavanceerde Onderwerpen
C++-Functies

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:

Beknoptheid
expand arrow

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.

Lokale scope
expand arrow

Ze kunnen variabelen uit de omliggende scope vastleggen, waardoor je variabelen uit de bovenliggende functie binnen de lambda kunt gebruiken.

Flexibiliteit
expand arrow

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

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

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 multiplier op via referentie [&multiplier];

  • Het retourtype -> int geeft aan dat de lambda-functie een integer retourneert;

  • De lambda wordt direct aangeroepen met het argument 5, en het resultaat wordt opgeslagen in de variabele result.

question mark

Wat is het doel van een capture clause in een lambda-functie?

Selecteer het correcte antwoord

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 4. Hoofdstuk 4

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Sectie 4. Hoofdstuk 4
some-alt