V tomto článku se dozvíte o vnořených funkcích v Swiftu a o tom, jak to funguje, s příklady.
Pokud funkce existuje uvnitř těla jiné funkce, nazývá se to vnořená funkce.
Syntaxe vnořené funkce
func funcname () (// příkazy vnější funkce func anotherFuncname () (// příkazy vnitřní funkce))
Zde je funkce anotherFuncname
uvnitř těla jiné funkce funcname
.
Je třeba poznamenat, že vnitřní funkce lze volat a používat pouze uvnitř uzavírací funkce (vnější funkce).
Příklad 1: Vnořená funkce bez návratových hodnot
func outputMessageByGreeting(_ message: String) ( func addGreetingAndPrint() ( print("Hello! (message)") ) addGreetingAndPrint() ) outputMessageByGreeting("Jack")
Když spustíte program, výstup bude:
Ahoj! Zvedák
Ve výše uvedeném programu je vnořená funkce addGreetingAndPrint()
volána z uzavírací funkce outputMessageByGreeting()
.
Příkaz outputMessageByGreeting("Jack")
volá vnější funkci. A příkaz addGreetingAndPrint()
uvnitř vnější funkce volá metodu, která vydává Hello! Jack v konzole.
Funkci nelze volat addGreetingAndPrint
mimo funkci outputMessageByGreeting
.
Příklad 2: Vnořená funkce s parametry a návratovými hodnotami
Vnořené funkce mohou obsahovat funkce s parametry 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)
Když spustíte program, výstup bude:
5
Ve výše uvedeném programu
- vnější funkce je
operate()
s návratovou hodnotou typu Function(Int,Int) -> Int
. - a vnitřní (vnořené) funkce jsou
add()
asubtract()
.
Vnořená funkce add()
a subtract()
svým způsobem se používají mimo uzavírací funkci operate()
. To je možné, protože vnější funkce vrací jednu z těchto funkcí.
Použili jsme vnitřní funkci mimo uzavírací funkci operate()
jako operation(2, 3)
. Program interně volá, add(2, 3)
jehož výstupy 5 jsou v konzole.