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ä:
Lambda-funktioiden avulla voit kirjoittaa lyhyttä ja ytimekästä koodia. Ne sopivat erinomaisesti operaatioihin, jotka voidaan ilmaista muutamalla rivillä.
Ne voivat ottaa muuttujia ympäröivästä laajuudesta, jolloin voit käyttää lambda-funktion sisällä ylemmän funktion muuttujia.
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
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
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
-> intmäärittää, että lambda-funktio palauttaa kokonaisluvun; -
Lambda suoritetaan välittömästi argumentilla
5, ja tulos tallennetaan muuttujaanresult.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme