In dit artikel leert u met voorbeelden over geneste functies in Swift en hoe het werkt.
Als een functie in de body van een andere functie bestaat, wordt deze geneste functie genoemd.
Syntaxis van een geneste functie
func funcname () // statements van de buitenste functie func anotherFuncname () (// statements van de innerlijke functie))
Hier bevindt de functie anotherFuncname
zich in het lichaam van een andere functie funcname
.
Opgemerkt moet worden dat innerlijke functies alleen kunnen worden aangeroepen en gebruikt binnen de omsluitende functie (uiterlijke functie).
Voorbeeld 1: geneste functie zonder retourwaarden
func outputMessageByGreeting(_ message: String) ( func addGreetingAndPrint() ( print("Hello! (message)") ) addGreetingAndPrint() ) outputMessageByGreeting("Jack")
Wanneer u het programma uitvoert, is de uitvoer:
Hallo! Jack
In het bovenstaande programma wordt de geneste functie addGreetingAndPrint()
aangeroepen vanuit de omsluitende functie outputMessageByGreeting()
.
De instructie outputMessageByGreeting("Jack")
roept de uiterlijke functie aan. En de instructie addGreetingAndPrint()
binnen de buitenste functie roept de methode aan die Hello! Jack in de console.
U kunt de functie niet addGreetingAndPrint
buiten de functie oproepen outputMessageByGreeting
.
Voorbeeld 2: geneste functie met parameters en retourwaarden
Geneste functies kunnen functies bevatten met parameters en retourwaarden.
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)
Wanneer u het programma uitvoert, is de uitvoer:
5
In het bovenstaande programma,
- de buitenste functie is
operate()
, met retourwaarde van het type Functie(Int,Int) -> Int
. - en de binnenste (geneste) functies zijn
add()
ensubtract()
.
De geneste functie add()
en subtract()
in zekere zin worden gebruikt buiten de omsluitende functie operate()
. Dit is mogelijk omdat de buitenste functie een van deze functies retourneert.
We hebben de innerlijke functie buiten de omsluitende functie gebruikt operate()
als operation(2, 3)
. Het programma roept intern op add(2, 3)
welke output 5 in de console.