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()jasubtract().
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.








