Vnořené funkce v Swift (s příklady)

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 anotherFuncnameuvnitř 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 addGreetingAndPrintmimo 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()a subtract().

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.

Zajímavé články...