I denne artikkelen vil du lære om nestede funksjoner i Swift og hvordan det fungerer med eksempler.
Hvis en funksjon eksisterer inne i kroppen til en annen funksjon, kalles den nestet funksjon.
Syntaks for en nestet funksjon
func funcname () (// uttalelser om ytre funksjon func anotherFuncname () (// uttalelser om indre funksjon))
Her er funksjonen anotherFuncname
inne i kroppen til en annen funksjon funcname
.
Det skal bemerkes at indre funksjoner bare kan kalles og brukes inne i den omsluttende funksjonen (ytre funksjon).
Eksempel 1: Nestet funksjon uten returverdier
func outputMessageByGreeting(_ message: String) ( func addGreetingAndPrint() ( print("Hello! (message)") ) addGreetingAndPrint() ) outputMessageByGreeting("Jack")
Når du kjører programmet, vil utdataene være:
Hallo! Jack
I det ovennevnte programmet blir den nestede funksjonen addGreetingAndPrint()
kalt fra den omsluttende funksjonen outputMessageByGreeting()
.
Uttalelsen outputMessageByGreeting("Jack")
kaller den ytre funksjonen. Og uttalelsen addGreetingAndPrint()
inne i den ytre funksjonen kaller metoden som gir ut Hello! Jack i konsollen.
Du kan ikke ringe funksjonen addGreetingAndPrint
utenfor funksjonen outputMessageByGreeting
.
Eksempel 2: Nestet funksjon med parametere og returverdier
Nestede funksjoner kan inneholde funksjoner med parametere og returverdier.
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 kjører programmet, vil utdataene være:
5
I programmet ovenfor,
- den ytre funksjonen er
operate()
, med returverdien av typen Funksjon(Int,Int) -> Int
. - og de indre (nestede) funksjonene er
add()
ogsubtract()
.
Den nestede funksjonen add()
og blir subtract()
på en måte brukt utenfor den omsluttende funksjonen operate()
. Dette er mulig fordi den ytre funksjonen returnerer en av disse funksjonene.
Vi har brukt den indre funksjonen utenfor den omsluttende funksjonen operate()
som operation(2, 3)
. Programmet kaller internt add(2, 3)
hvilke utganger 5 i konsollen.