Mitä ovat Lambda-lausekkeet tai nimettömät toiminnot eri ohjelmointikielissä?

Aloitetaan C ++-, Java-, Python- ja JavaScript-nuolitoimintojen yhteydessä. Ensin puhutaan anonyymeistä toiminnoista yleensä tietotekniikan ja ohjelmoinnin suhteen

Tietokoneohjelmoinnissa anonyymi funktio (funktion kirjaimellinen, lambda-abstraktio tai lambda-lauseke) on funktion määritelmä, jota ei ole sidottu tunnisteeseen. Anonyymit funktiot ovat usein argumentteja, jotka siirretään korkeamman asteen funktioille tai joita käytetään rakentamaan korkeamman asteen funktion tulos, joka täytyy palauttaa funktio. Jos toimintoa käytetään vain kerran tai rajoitetusti useita kertoja, tuntematon funktio voi olla syntaktisesti kevyempi kuin nimitetyn toiminnon käyttäminen.

Anonyymit toiminnot ovat olleet piirre ohjelmointikieleille Lisp: stä vuonna 1958 lähtien, ja yhä useammat nykyaikaiset ohjelmointikielet tukevat nimettömiä toimintoja. Käytin henkilökohtaisesti usein asynkronisissa menetelmissä ja soittoäänissä.

Lambda-lausekkeet C ++-muodossa

C ++ 11: ssä ja myöhemmissä lambda-lauseke - jota usein kutsutaan lambdaksi - on kätevä tapa määritellä anonyymi funktiobjekti (suljin) oikeassa paikassa, johon se kutsutaan tai siirretään argumentiksi funktiona. Tyypillisesti lambdat käytetään kapseloimaan muutama koodirivi, joka välitetään algoritmeille tai asynkronisille menetelmille.

# sisällytä 
# sisältää 
tyhjä abortti (kelluva * x, allekirjoittamaton n) {
    std :: lajitella (x, x + n,
        // Lambdan lauseke alkaa
        [] (kellua a, kelluu b) {
            paluu (std: abs (a) 
Tiedän, että yllä oleva esimerkki voi näyttää monimutkaiselta, mutta jos näemme muita kieli-esimerkkejä, se on selkeämpi ja saatat rakastua lambda-toimintoihin.

Lambda-lausekkeet Pythonissa

Pieniä nimettömiä toimintoja voidaan luoda lambda-avainsanalla. Tämä funktio palauttaa kahden argumentin summan: lambda a, b: a + b. Lambda-toimintoja voidaan käyttää missä tahansa toimintoobjekteja vaaditaan. Ne ovat syntaktisesti rajoitettu yhteen lausekkeeseen. Semanttisesti ne ovat vain syntaktista sokeria normaalin toiminnan määrittelemiseksi. Kuten sisäkkäiset funktiomääritelmät, myös lambda-funktiot voivat viitata muuttujiin sisältävästä laajuudesta.

def make_incrementor (n):
    palauta lambda x: x + n

f = make_incrementor (5)
f (0)

f (1)
Python lambda -toimintoesimerkki

Toivon yllä olevan esimerkin perusteella, että sinulla on karkea käsitys lambda-toiminnasta pythonissa

Lambda-lausekkeet - Java 8

Lambda-lausekkeet otetaan käyttöön Java 8: ssa, ja niiden katsotaan olevan Java 8: n suurin ominaisuus. Lambda-lausekkeet helpottavat toiminnallista ohjelmointia ja yksinkertaistavat kehitystä paljon. Puhun toiminnallisesta ohjelmoinnista toisessa post.Jos haluat, että voit lukea siitä Wikipediassa.

Syntaksi

Lambda-lausekkeelle on tunnusomaista seuraava syntaksi.

parametri -> lausekekappale

Koodinäyte Java 8: lle

julkinen luokka Java8Lambda {
julkinen staattinen void main (merkkijonot []) {
      Java8Lambda -testeri = uusi Java8Lambda ();
  
      // tyyppi-ilmoituksella
      MathOperaation lisäys = (int a, int b) -> a + b;
  
      // ilman tyyppilmoitusta
      MathOperaation vähennys = (a, b) -> a - b;
  
      // paluuilmoitus ja kiharaketju
 MathOperaation kertolasku = (int a, int b) -> {palauta a * b; };
  
 // ilman paluuilmoitusta ja ilman kiharanauhoja
 MathOperaation jako = (int a, int b) -> a / b;
  
      System.out.println ("10 + 5 =" + testeri.operaattori (10, 5, lisäys));
      System.out.println ("10 - 5 =" + testaaja.operaattori (10, 5, vähentäminen));
      System.out.println ("10 x 5 =" + testaaja.operaattori (10, 5, kertolasku));
      System.out.println ("10/5 =" + testaaja.operaattori (10, 5, jako));
  
      // ilman sulkuja
      GreetingService greetService1 = viesti ->
      System.out.println ("Hei" + viesti);
  
      // suluilla
      GreetingService greetService2 = (viesti) ->
      System.out.println ("Hei" + viesti);
  
      greetService1.sayMessage ( "Rajdeep");
      greetService2.sayMessage ( "Sougata");
   }
 
   käyttöliittymä MathOperation {
      int-toiminta (int a, int b);
   }
 
   käyttöliittymä GreetingService {
      void sayMessage (merkkijono);
   }
 
   yksityiset int toimivat (int a, int b, MathOperation mathOperation) {
      palauta mathOperation.operation (a, b);
   }
}

Output: -

Java 8 lambda -demo

Nuolitoiminnot JavaScript ES6: ssa

Nuolitoiminto on moderni tapa julistaa tuntematon funktio. ES6-rasvanuolifunktioilla on lyhyempi syntaksi funktionlausekkeisiin verrattuna ja ne sitovat tämän arvon leksikaalisesti. Nuolitoiminnot ovat aina nimettömiä ja muuttavat funktion (argumentit) {lauseke} tehokkaasti argumentiksi => lausekkeeksi. Jos käytetään lauseketta nuolen jälkeen, paluu on implisiittinen, joten palautusta ei tarvita.

// Sulkumerkit ovat valinnaisia ​​argumenttien lukumäärästä riippuen:
olkoon neliö = x => x * x;
console.log (neliö (10));

anna lisätä = (a, b) => a + b;
konsoli.logi (lisää (3, 4));
Esittele javascript es6 -nuolitoiminto.