Sisäkkäiset toiminnot nopeasti (esimerkkien avulla)

Tässä artikkelissa opit Swiftin sisäkkäisistä toiminnoista ja kuinka se toimii esimerkkien avulla.

Jos funktio on toisen funktion rungossa, sitä kutsutaan sisäkkäiseksi funktioksi.

Sisäkkäisen funktion syntakse

 func funcname () (// ulkoisen funktion lauseet func anotherFuncname () (// sisäisen funktion lauseet)) 

Tässä funktio anotherFuncnameon toisen toiminnon rungossa funcname.

On huomattava, että sisäisiä toimintoja voidaan kutsua ja käyttää vain sulkutoiminnon (ulompi toiminto) sisällä.

Esimerkki 1: Sisäkkäinen funktio ilman palautusarvoja

 func outputMessageByGreeting(_ message: String) ( func addGreetingAndPrint() ( print("Hello! (message)") ) addGreetingAndPrint() ) outputMessageByGreeting("Jack") 

Kun suoritat ohjelmaa, tulos on:

Hei! Jack

Yllä olevassa ohjelmassa sisäkkäistä toimintoa addGreetingAndPrint()kutsutaan sulkeutuvasta toiminnosta outputMessageByGreeting().

Lauseke outputMessageByGreeting("Jack")kutsuu ulompaa funktiota. Ja addGreetingAndPrint()ulkoisen funktion sisällä oleva lause kutsuu menetelmää, joka tuottaa Hei! Jack konsolissa.

Et voi kutsua toimintoa sen addGreetingAndPrintulkopuolelle outputMessageByGreeting.

Esimerkki 2: Sisäkkäinen toiminto parametreilla ja palautusarvoilla

Sisäkkäiset funktiot voivat sisältää toimintoja, joilla on parametreja ja palautusarvoja.

 func operate(with symbol:String) -> (Int, Int) -> Int ( func add(num1:Int, num2:Int) -> Int ( return num1 + num2 ) func subtract(num1:Int, num2:Int) -> Int ( return num1 - num2 ) let operation = (symbol == "+") ? add : subtract return operation ) let operation = operate(with: "+") let result = operation(2, 3) print(result) 

Kun suoritat ohjelmaa, tulos on:

 5

Yllä olevassa ohjelmassa

  • ulompi funktio on operate(), palautusarvolla tyyppi Funktio (Int,Int) -> Int.
  • ja sisäiset (sisäkkäiset) toiminnot ovat add()ja subtract().

Nested-toiminto add()ja subtract()siten käytetään ulkopuolella sulkevan toiminto operate(). Tämä on mahdollista, koska ulompi funktio palauttaa yhden näistä toiminnoista.

Olemme käyttäneet sisäistä toimintoa sulkutoiminnon ulkopuolella operate()kuten operation(2, 3). Ohjelma soittaa sisäisesti, add(2, 3)mikä lähtö 5 konsolissa.

Mielenkiintoisia artikkeleita...