Tekijä: Timilehin Omolana
JaaTweetJaaSähköposti

Opi kuinka lambdat voivat tehdä koodistasi tehokkaamman ja helpommin ylläpidettävän.

Ohjelmointikielet kehittyvät jatkuvasti, myös C++:n kaltaiset, jotka ovat vakiintuneet jo kauan sitten. Ne lisäävät toimintoja vakiokirjastoihin ja tekevät muita muutoksia helpottaakseen dynaamisella alalla työskentelevien ohjelmoijien työtä.

Osana kielen kehityksen tuomia päivityksiä C++ lisäsi tuen lambda-lausekkeille vuoden 2011 julkaisussaan.

Mikä lambda-lauseke tarkalleen ottaen on, ja kuinka voit käyttää sitä hyödyksesi C++-ohjelmoijana?

Mikä on lambda-ilmaisu?

Lambda-lauseke tunnetaan myös lambda-funktiona. Se on sisäinen lauseke, joka voi hyväksyä argumentteja, suorittaa toimintoja ja palauttaa arvon, aivan kuten tyypillinen toiminto.

Voit käyttää lambdaa toisen funktion sisällä ja liittää sen muuttujaan. Lamba-funktiot ovat käytännöllinen tapa määritellä anonyymi funktioobjekti ohjelmassa. Lähes kaikki kielet tukevat lambda-kieliä, vaikka jokainen toteutus eroaa muista.

instagram viewer

Mitkä ovat C++-lambda-lausekkeen osat?

Lambda-lausekkeita on helppo käyttää C++:ssa. Voit jakaa lambda-lausekkeen syntaksin C++:ssa seuraavasti:

[capture_clause](parameters) option { lauseke_body; }

Esimerkiksi:

int val = 13;
auto sumPlusVal = [arvo](int a, int b) vaihtelevaei paitsi ->int { palata val + a + b; };
sumPlusVal(2, 5); // 20

Tämä koodi ilmoittaa sumPlusVal muuttuja auto, koska lambda-lauseke voi hyväksyä ja palauttaa minkä tahansa tietotyypin. Tämä jättää kääntäjän tehtäväksi määrittää tyypin kääntämisen aikana.

Yllä olevasta koodista näet, että lambda-lauseke sisältää useita osia, jotka määrittävät sen toiminnan. Tässä on nopea yleiskatsaus jokaisesta näistä komponenteista.

  1. Capture-lauseke: Tämä on lambda-lausekkeen ensimmäinen osa, jossa voit määrittää jo olemassa olevia muuttujia tai uusia käytettäväksi lausekkeen rungossa. Kaappauksia voi määrittää eri tavoin, esimerkiksi:
    auto addTwo = [foo](){ palata foo + 2; }; // arvon mukaan
    auto addThree = [&bar](){ palata baari + 3; }; // viittaamalla
    auto addAllVal = [=](){ palata foo + baari; }; // kaikki arvon mukaan
    auto addAllRef = [&](){ palata foo + baari; }; // kaikki viitteellä

    // luo muuttujan sieppauslauseeseen
    auto createVarInCapture = [fooBar = foo + bar](){ palata fooBar * 5; };

    // ei sieppausta - palauttaa virheen, koska foo ei ole käytettävissä
    auto errorExpression = [](){ palata foo + 2; };

  2. Parametrit: Tämä lambda-lausekkeen osa on myös valinnainen. Se sisältää lambdan vaatimat toimintoparametrit. Tämä ei eroa tavallisesta tavasta, jolla määrität funktioparametrit C++:ssa.
  3. Vaihtoehdot: Voit myös määrittää valinnat määritettäessä lambda-lauseketta. Joitakin vaihtoehtoja, joita voit käyttää, ovat: vaihteleva, poikkeus (esim ei paitsi ensimmäisessä mallikoodissa), ->palautustyyppi (esim -> int), vaatii, attribuutteja, jne. The vaihteleva Vaihtoehtoa käytetään usein, koska sen avulla kaappauksia voidaan muokata lambdan sisällä. Alla oleva koodi osoittaa tämän.
    int arvo = 10;

    // palauttaa virheen - arvo on lausekkeen sisällä oleva const
    automaattinen vähennys = [arvo](){ palata --arvo; };
    automaattinen lisäys = [arvo]() muuttuva { palata ++arvo; };
    lisäys(); // 11

    Vaikka muita vaihtoehtoja käytetään harvoin, voit saada lisätietoja niistä osoitteessa cppreference.com sivu lambdassa.
  4. Ilmaisun runko: Tämä on lambda-lausekkeen runko, joka suorittaa ja palauttaa arvon, aivan kuten funktio tekisi. Tarvittaessa voit jakaa lambda-lausekkeen rungon useammalle kuin yhdelle riville. Paras käytäntö on kuitenkin pitää se mahdollisimman lyhyenä koodin epäjärjestyksen estämiseksi.

Mitkä ovat lambda-ilmaisujen edut?

Lambda-funktioiden käyttämisessä koodissasi on monia etuja. Paremman kehitysnopeuden ja tehokkuuden lisäksi lambdasta saamasi tärkeimmät edut ovat seuraavat:

  • Lambda-lausekkeet auttavat pitämään koodin puhtaana. Yksi parhaista tavoista pitää koodisi yksinkertaisena ja siistinä on käyttää lambdaa mahdollisuuksien mukaan. Tämä voi olla erittäin hyödyllistä luettavan ja uudelleenkäytettävän koodirakenteen ylläpitämisessä.
  • Voit siirtää lambdat muille funktioille parametreina. The C++-standardikirjastotstd:: sort() menetelmä hyödyntää tätä etua. Voit antaa lambdan yhdeksi tämän menetelmän parametreista määrittääksesi, kuinka funktion tulee suorittaa lajittelu. Esimerkiksi:
     std:: vektori<int> arr = {2, 5, 1, 3, 4};
    std:: sort (arr.begin(), arr.end(), [](int a, int b){ palata a < b; });
    // arr = {1, 2, 3, 4, 5}
  • Lambdat ovat uudelleenkäytettäviä. Joskus saatat haluta tehdä koodilohkon uudelleen käytettäväksi ohjelmasi funktion puitteissa ilman, että sinun tarvitsee määrittää uutta funktiota. Lambdat voivat olla erittäin hyödyllisiä tällaisissa tapauksissa. Harkitse seuraavaa esimerkkiä uudelleen käytettävästä lambda-lausekkeesta:
    #sisältää <iostream>
    käyttämällä nimiavaruusstd;

    intpää(){
    // määrittele uudelleen käytettävä lambda
    auto addUp = [](auto a, auto b, auto c) ei paitsi {
    cout <<"Nyt summataan... "<< a <<", "<< b <<" ja "<< c << endl;
    palata a + b + c;
    };

    cout << summa (22, 33, 44) << endl;
    cout << addUp (string("Onnellinen "), merkkijono("Syntymä"), merkkijono("päivä")) << endl;
    cout << addUp(totta, väärä, totta) << std:: endl; // suoritetaan numeroina (1 ja 0)
    }

    Tämä ohjelma tuottaa seuraavan tuloksen: Tämä esimerkki osoittaa, kuinka helppoa on määrittää lambda, jotta voit käyttää sitä minkä tahansa tyypin kanssa.

Lambdan käyttö C++:ssa

Lambda-lausekkeet tarjoavat monia muita etuja, ja huomaat ne, kun ohjelmasi rakenne muuttuu monimutkaisemmaksi. Itse asiassa C++-ohjelmoijat kutsuvat joskus lambda-lausekkeita sulkemisiksi, koska ne ovat niin loistava tapa toteuttaa sulkemisia koodissa.

Sinun tulee harkita lambda-lausekkeita, jos haluat sisällyttää nykyaikaiset C++-konseptit koodikantaasi.

11 C++-koodinpätkää jokapäiväisiin ohjelmointiongelmiin

Lue Seuraava

JaaTweetJaaSähköposti

Liittyvät aiheet

  • Ohjelmointi
  • Ohjelmointi
  • Koodauksen opetusohjelmat

Kirjailijasta

Timilehin Omolana (5 artikkelia julkaistu)

Timilehin on ohjelmistosuunnittelija ja tekninen kirjoittaja, joka rakastaa palvelinpuolen teknologioiden ja hajautettujen järjestelmien maailmaa tutkimista.

Lisää Timilehin Omolanalta

tilaa uutiskirjeemme

Liity uutiskirjeemme saadaksesi teknisiä vinkkejä, arvosteluja, ilmaisia ​​e-kirjoja ja eksklusiivisia tarjouksia!

Klikkaa tästä tilataksesi