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 anotherFuncname
vo 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ť addGreetingAndPrint
mimo 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()
asubtract()
.
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.