Indlejrede funktioner i Swift (med eksempler)

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()og subtract().

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.

Interessante artikler...