Autors Timilehins Omolana
DalītiesČivinātDalītiesE-pasts

Uzziniet, kā lambdas var padarīt jūsu kodu efektīvāku un vieglāk uzturējamu.

Programmēšanas valodas nepārtraukti attīstās, pat tās, piemēram, C++, kas ir izveidojušās jau sen. Tie pievieno funkcijas standarta bibliotēkām un veic citas izmaiņas, lai atvieglotu programmētāju darbu, kas strādā dinamiskā jomā.

Kā daļu no atjauninājumiem, ko radīja valodas evolūcija, C++ savā 2011. gada laidienā pievienoja atbalstu lambda izteiksmēm.

Kas īsti ir lambda izteiksme, un kā jūs varat to izmantot savā labā kā C++ programmētājs?

Kas ir Lambda izteiksme?

Lambda izteiksme ir pazīstama arī kā lambda funkcija. Tā ir iekļauta izteiksme ar iespēju pieņemt argumentus, veikt darbības un atgriezt vērtību, tāpat kā tipiska funkcija.

Varat izmantot lambda citā funkcijā un piešķirt to mainīgajam. Lamba funkcijas ir praktisks veids, kā programmā definēt anonīmu funkciju objektu. Gandrīz visas valodas atbalsta lambdas, lai gan katra versija atšķiras no citām.

instagram viewer

Kādas ir C++ Lambda izteiksmes daļas?

Lambda izteiksmes ir viegli lietojamas programmā C++. Lambda izteiksmes sintaksi programmā C++ var sadalīt šādi:

[capture_clause](parameters) opcijas { expression_body; }

Piemēram:

starpt val = 13;
auto sumPlusVal = [val](starpt a, starpt b) mainīgsnē izņemot ->starpt { atgriezties val + a + b; };
sumPlusVal(2, 5); // 20

Šis kods deklarē sumPlusVal mainīgais auto, jo lambda izteiksme var pieņemt un atgriezt jebkuru datu tipu. Tādējādi kompilatora ziņā ir noteikt veidu kompilācijas laikā.

No iepriekš minētā koda varat redzēt, ka lambda izteiksmē ir vairākas daļas, kas norāda, kā tā darbojas. Šeit ir īss pārskats par katru no šiem komponentiem.

  1. Tveršanas klauzula: šī ir pirmā lambda izteiksmes daļa, kurā varat norādīt jau esošus mainīgos vai definēt jaunus, ko izmantot izteiksmes pamattekstā. Ir dažādi veidi, kā norādīt uztvērumus, piemēram:
    auto addTwo = [foo](){ atgriezties foo + 2; }; // pēc vērtības
    auto addThree = [&josla](){ atgriezties bārs + 3; }; // ar atsauci
    auto addAllVal = [=](){ atgriezties foo + bārs; }; // viss pēc vērtības
    auto addAllRef = [&](){ atgriezties foo + bārs; }; // viss pēc atsauces

    // izveidojiet mainīgo uztveršanas klauzulā
    auto createVarInCapture = [fooBar = foo + bar](){ atgriezties fooBar * 5; };

    // nav uztveršanas — atgriež kļūdu, jo foo nav pieejams
    auto errorExpression = [](){ atgriezties foo + 2; };

  2. Parametri: Šī lambda izteiksmes daļa arī nav obligāta. Tas satur funkciju parametrus, kas nepieciešami lambda. Tas neatšķiras no parastā veida, kā definējat funkciju parametrus programmā C++.
  3. Iespējas: Varat arī norādīt opcijas, definējot lambda izteiksmi. Dažas iespējas, kuras varat izmantot, ir šādas: mainīgs, izņēmums (piem nē izņemot pirmajā parauga kodā), ->atgriešanas_veids (piem -> starp), prasa, atribūtiutt. The mainīgs opcija tiek bieži izmantota, jo tā ļauj tveršanu mainīt lambda iekšpusē. Tālāk redzamais kods to parāda.
    starpt vērtība = 10;

    // atgriež kļūdu — vērtība ir const izteiksmē
    automātiskā samazināšana = [vērtība](){ atgriezties --vērtība; };
    auto increment = [vērtība]() mainīgs { atgriezties ++vērtība; };
    pieaugums (); // 11

    Lai gan pārējās iespējas tiek izmantotas reti, plašāku informāciju par tām varat iegūt vietnē cppreference.com lapa uz lambdas.
  4. Izteiksmes ķermenis: Šis ir lambda izteiksmes pamatteksts, kas izpilda un atgriež vērtību, līdzīgi kā to darītu funkcija. Ja nepieciešams, varat sadalīt lambda izteiksmes pamattekstu vairāk nekā vienā rindā. Tomēr paraugprakse ir rakstīt pēc iespējas īsu, lai novērstu nesakārtotu kodu.

Kādas ir Lambda izteiksmju priekšrocības?

Lambda funkciju izmantošanai kodā ir daudz priekšrocību. Papildus lielākam izstrādes ātrumam un efektivitātei, galvenās priekšrocības, ko iegūstat no lambdas, ir šādas:

  • Lambda izteiksmes palīdz uzturēt kodu tīru. Viens no labākajiem veidiem, kā padarīt kodu vienkāršu un glītu, ir izmantot lambdas, kur iespējams. Tas var būt ļoti noderīgi, lai uzturētu lasāmu un atkārtoti lietojamu koda struktūru.
  • Jūs varat nodot lambdas citām funkcijām kā parametrus. The C++ standarta bibliotēkasstd:: šķirot() metode izmanto šo priekšrocību. Varat nodot lambda kā vienu no šīs metodes parametriem, lai norādītu, kā funkcijai jāveic kārtošana. Piemēram:
     std:: vektors<starpt> arr = {2, 5, 1, 3, 4};
    std:: kārtot (arr.begin(), arr.end(), [](starpt a, starpt b){ atgriezties a < b; });
    // arr = {1, 2, 3, 4, 5}
  • Lambdas ir atkārtoti lietojamas. Dažkārt, iespējams, vēlēsities koda bloku padarīt atkārtoti lietojamu programmas funkcijas ietvaros, nedefinējot jaunu funkciju. Šādos gadījumos lambdas var būt ļoti noderīgas. Apsveriet šādu atkārtoti lietojamas lambda izteiksmes piemēru:
    #iekļauts <iostream>
    izmantojot nosaukumvietastd;

    starptgalvenais(){
    // definējiet atkārtoti lietojamu lambda
    auto addUp = [](automātiskais a, automātiskais b, automātiskais c) noexcept {
    cout <<"Tagad saskaita... "<< a <<", "<< b <<" un "<< c << endl;
    atgriezties a+b+c;
    };

    cout << saskaitīšana (22, 33, 44) << endl;
    cout << addUp (string("Laimīgs "), virkne ("Dzimšana"), virkne ("diena")) << endl;
    cout << addUp(taisnība, viltus, taisnība) << std:: endl; // izpilda kā skaitļus (1 un 0)
    }

    Šī programma dod šādu rezultātu: Šis piemērs parāda, cik vienkārši ir definēt lambda, lai to varētu izmantot ar jebkura veida.

Lambdas izmantošana programmā C++

Ir daudzas citas priekšrocības, ko piedāvā lambda izteiksmes, un jūs tās atklāsit, kad jūsu programmas struktūra kļūst sarežģītāka. Faktiski C++ programmētāji dažreiz atsaucas uz lambda izteiksmēm kā aizvēršanu, jo tās ir lielisks veids, kā kodā ieviest slēgšanu.

Apsveriet lambda izteiksmes, ja vēlaties savā kodu bāzē iekļaut modernas C++ koncepcijas.

11 C++ koda fragmenti ikdienas programmēšanas problēmām

Lasiet Tālāk

DalītiesČivinātDalītiesE-pasts

Saistītās tēmas

  • Programmēšana
  • Programmēšana
  • Kodēšanas apmācības

Par autoru

Timilehins Omolana (Publicēti 5 raksti)

Timilehins ir programmatūras inženieris un tehniskais rakstnieks, kuram patīk izpētīt servera puses tehnoloģiju un izplatīto sistēmu pasauli.

Vairāk no Timilehina Omolana

Abonējiet mūsu biļetenu

Pievienojieties mūsu informatīvajam izdevumam, lai saņemtu tehniskos padomus, pārskatus, bezmaksas e-grāmatas un ekskluzīvus piedāvājumus!

Noklikšķiniet šeit, lai abonētu