Vnorené funkcie v aplikácii Swift (s príkladmi)

V tomto článku sa dozviete o vnorených funkciách v aplikácii Swift a o tom, ako to funguje, pomocou príkladov.

Ak funkcia existuje v tele inej funkcie, nazýva sa to vnorená funkcia.

Syntax vnorenej funkcie

 func funcname () (// príkazy vonkajšej funkcie func anotherFuncname () (// príkazy vnútornej funkcie)) 

Tu je funkcia anotherFuncnamevo vnútri tela inej funkcie funcname.

Je potrebné poznamenať, že vnútorné funkcie možno volať a používať iba vo vnútri uzatváracej funkcie (vonkajšia funkcia).

Príklad 1: Vnorená funkcia bez návratových hodnôt

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

Po spustení programu bude výstup:

Ahoj! Jack

Vo vyššie uvedenom programe sa vnorená funkcia addGreetingAndPrint()volá z priloženej funkcie outputMessageByGreeting().

Príkaz outputMessageByGreeting("Jack")volá vonkajšiu funkciu. A vyhlásenie addGreetingAndPrint()vo vnútri vonkajšej funkcie volá metódu, ktorá vydáva Hello! Jack v konzole.

Funkciu nemôžete volať addGreetingAndPrintmimo tejto funkcie outputMessageByGreeting.

Príklad 2: Vnorená funkcia s parametrami a návratovými hodnotami

Vnorené funkcie môžu obsahovať funkcie s parametrami a návratovými hodnotami.

 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) 

Po spustení programu bude výstup:

 5

Vo vyššie uvedenom programe

  • vonkajšia funkcia je operate()s návratovou hodnotou typu Function (Int,Int) -> Int.
  • a vnútorné (vnorené) funkcie sú add()a subtract().

Vnorená funkcia add()a subtract()svojím spôsobom sa používa mimo uzatváracej funkcie operate(). Je to možné, pretože vonkajšia funkcia vracia jednu z týchto funkcií.

Použili sme vnútornú funkciu mimo uzatváraciu funkciu operate()ako operation(2, 3). Program interne volá add(2, 3)ktoré výstupy 5 v konzole.

Zaujímavé články...