I denne artikel lærer du om indlejrede funktioner i Swift, og hvordan det fungerer med eksempler.
Hvis der findes en funktion inde i kroppen af en anden funktion, kaldes den indlejret funktion.
Syntaks for en indlejret funktion
func funcname () (// udsagn om ydre funktion func anotherFuncname () (// udsagn om indre funktion))
Her er funktionen anotherFuncnameinde i kroppen af en anden funktion funcname.
Det skal bemærkes, at indre funktioner kun kan kaldes og bruges inde i den omgivende funktion (ydre funktion).
Eksempel 1: Indlejret funktion uden returværdier
func outputMessageByGreeting(_ message: String) ( func addGreetingAndPrint() ( print("Hello! (message)") ) addGreetingAndPrint() ) outputMessageByGreeting("Jack")
Når du kører programmet, vil output være:
Hej! Jack
I ovenstående program addGreetingAndPrint()kaldes den indlejrede funktion fra den omsluttende funktion outputMessageByGreeting().
Erklæringen outputMessageByGreeting("Jack")kalder den ydre funktion. Og erklæringen addGreetingAndPrint()inde i den ydre funktion kalder metoden, som udsender Hello! Stik i konsollen.
Du kan ikke ringe til funktionen addGreetingAndPrintuden for funktionen outputMessageByGreeting.
Eksempel 2: Indlejret funktion med parametre og returværdier
Indlejrede funktioner kan indeholde funktioner med parametre og returværdier.
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)
Når du kører programmet, vil output være:
5
I ovenstående program,
- den ydre funktion er
operate()med returværdi af typen Funktion(Int,Int) -> Int. - og de indre (indlejrede) funktioner er
add()ogsubtract().
Den indlejrede funktion add()og bruges subtract()på en måde uden for den indesluttende funktion operate(). Dette er muligt, fordi den ydre funktion returnerer en af disse funktioner.
Vi har brugt den indre funktion uden for den indesluttende funktion operate()som operation(2, 3). Programmet kalder internt add(2, 3)hvilke output 5 i konsollen.








