Vgnezdene funkcije v Swiftu (s primeri)

V tem članku boste izvedeli več o ugnezdenih funkcijah v Swiftu in kako deluje s primeri.

Če funkcija obstaja znotraj telesa druge funkcije, se imenuje ugnezdena funkcija.

Sintaksa ugnezdene funkcije

 func funcname () (// stavki zunanje funkcije func anotherFuncname () (// stavki notranje funkcije)) 

Tu je funkcija anotherFuncnameznotraj telesa druge funkcije funcname.

Upoštevati je treba, da je notranje funkcije mogoče poklicati in uporabljati samo znotraj ograjevalne funkcije (zunanja funkcija).

Primer 1: ugnezdena funkcija brez vrnjenih vrednosti

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

Ko zaženete program, bo rezultat:

Zdravo! Jack

V zgornjem programu se ugnezdena funkcija addGreetingAndPrint()prikliče iz ograjevalne funkcije outputMessageByGreeting().

Stavek outputMessageByGreeting("Jack")pokliče zunanjo funkcijo. In stavek addGreetingAndPrint()znotraj zunanje funkcije pokliče metodo, ki izpiše Hello! Jack v konzoli.

Funkcije ne morete poklicati addGreetingAndPrintzunaj funkcije outputMessageByGreeting.

2. primer: ugnezdena funkcija s parametri in vrnjenimi vrednostmi

Vgnezdene funkcije lahko vsebujejo funkcije s parametri in vrnjenimi vrednostmi.

 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) 

Ko zaženete program, bo rezultat:

 5.

V zgornjem programu

  • zunanja funkcija je operate()z vrnjeno vrednostjo tipa Function (Int,Int) -> Int.
  • notranje (ugnezdene) funkcije pa so add()in subtract().

Vgnezdena funkcija add()in subtract()na nek način se uporabljata zunaj zaprte funkcije operate(). To je mogoče, ker zunanja funkcija vrne eno od teh funkcij.

Notranjo funkcijo smo uporabili zunaj ograjevalne funkcije operate()kot operation(2, 3). Program interno pokliče, add(2, 3)ki v konzoli odda 5.

Zanimive Članki...