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 anotherFuncname
inde 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 addGreetingAndPrint
uden 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.