Ugniježđene funkcije u Swiftu (s primjerima)

U ovom ćete članku naučiti o ugniježđenim funkcijama u Swiftu i kako to funkcionira s primjerima.

Ako funkcija postoji unutar tijela druge funkcije, naziva se ugniježđena funkcija.

Sintaksa ugniježđene funkcije

 func funcname () (// izjave vanjske funkcije func anotherFuncname () (// izjave unutarnje funkcije)) 

Ovdje je funkcija anotherFuncnameunutar tijela druge funkcije funcname.

Treba napomenuti da se unutarnje funkcije mogu pozivati ​​i koristiti samo unutar funkcije ograđivanja (vanjska funkcija).

Primjer 1: Ugnježđena funkcija bez povratnih vrijednosti

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

Kada pokrenete program, izlaz će biti:

Zdravo! Utičnica

U gornjem programu, ugniježđena funkcija addGreetingAndPrint()poziva se iz funkcije koja obuhvaća outputMessageByGreeting().

Izjava outputMessageByGreeting("Jack")poziva vanjsku funkciju. A izjava addGreetingAndPrint()unutar vanjske funkcije poziva metodu koja daje Hello! Jack u konzoli.

Ne možete pozvati funkciju addGreetingAndPrintizvan funkcije outputMessageByGreeting.

Primjer 2: Ugniježđena funkcija s parametrima i povratnim vrijednostima

Ugniježđene funkcije mogu sadržavati funkcije s parametrima i povratnim vrijednostima.

 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) 

Kada pokrenete program, izlaz će biti:

 5

U gornjem programu,

  • vanjska je funkcija operate()s povratnom vrijednošću tipa Function (Int,Int) -> Int.
  • a unutarnje (ugniježđene) funkcije su add()i subtract().

Ugniježđena funkcija add()i subtract()na neki se način koriste izvan funkcije ograđivanja operate(). To je moguće jer vanjska funkcija vraća jednu od tih funkcija.

Koristili smo unutarnju funkciju izvan funkcije zatvaranja operate()kao operation(2, 3). Program interno poziva add(2, 3)koji na konzoli izbacuje 5.

Zanimljivi članci...