Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Lambda-Funktiot | Joitakin Edistyneitä Aiheita
C++-Funktiot

Lambda-Funktiot

Pyyhkäise näyttääksesi valikon

Lambda-funktiot eli anonyymit funktiot ovat ominaisuus, jonka avulla voit luoda pieniä, nimeämättömiä funktioita suoraan koodiin. Ne ovat erityisen hyödyllisiä, kun tarvitset yksinkertaista funktiota lyhytaikaiseen käyttöön etkä halua määritellä erillistä nimettyä funktiota.

Lambda-funktiot ovat hyödyllisiä useista syistä:

Ytimekkyys
expand arrow

Lambda-funktioiden avulla voit kirjoittaa lyhyttä ja ytimekästä koodia. Ne sopivat erinomaisesti operaatioihin, jotka voidaan ilmaista muutamalla rivillä.

Paikallinen laajuus
expand arrow

Ne voivat ottaa muuttujia ympäröivästä laajuudesta, jolloin voit käyttää lambda-funktion sisällä ylemmän funktion muuttujia.

Joustavuus
expand arrow

Lambdoja voidaan välittää argumentteina muille funktioille, mikä tekee niistä käteviä esimerkiksi funktioissa kuten std::for_each, std::sort jne.

Miten luodaan lambda-funktio?

Voit käyttää seuraavaa syntaksia luodaksesi lambda-funktion.

lambda_function.h

lambda_function.h

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

Kaappauslauseke lambda-funktiossa mahdollistaa sen, että voit määrittää, mitkä ympäröivän laajuuden (lambda-funktion ulkopuolella olevat) muuttujat ovat käytettävissä ja käytettävissä lambda-funktion sisällä. Yleisimmin käytettyjä kaappauslausekkeita on kolme:

  • Ei kaapata mitään []: lambda-funktio ei voi käyttää mitään muuttujia ympäröivästä laajuudesta;

  • Tietyt muuttujat arvolla [var1, var2, ...]: lambda-funktio voi käyttää tiettyjä muuttujia ympäröivästä laajuudesta arvon mukaan;

  • Tietyt muuttujat viittauksella [&var1, &var2, ...]: lambda-funktio voi käyttää tiettyjä muuttujia ympäröivästä laajuudesta viittauksen kautta.

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; }

Funktio rakennetaan seuraavasti:

  • Lambda-funktio ottaa multiplier-muuttujan viittauksena käyttöönsä [&multiplier];

  • Palautustyyppi -> int määrittää, että lambda-funktio palauttaa kokonaisluvun;

  • Lambda suoritetaan välittömästi argumentilla 5, ja tulos tallennetaan muuttujaan result.

question mark

Mikä on kaappauslausekkeen tarkoitus lambda-funktiossa?

Valitse oikea vastaus

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 4

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Osio 4. Luku 4
some-alt