Kapslade funktioner i Swift (med exempel)

I den här artikeln lär du dig om kapslade funktioner i Swift och hur det fungerar med exempel.

Om det finns en funktion inuti kroppen för en annan funktion kallas den kapslad funktion.

Syntax för en kapslad funktion

 func funcname () (// uttalanden för yttre funktion func anotherFuncname () (// uttalanden om inre funktion)) 

Här är funktionen anotherFuncnameinuti kroppen för en annan funktion funcname.

Det bör noteras att inre funktioner endast kan anropas och användas i den omslutande funktionen (yttre funktion).

Exempel 1: Kapslad funktion utan returvärden

 func outputMessageByGreeting(_ message: String) ( func addGreetingAndPrint() ( print("Hello! (message)") ) addGreetingAndPrint() ) outputMessageByGreeting("Jack") 

När du kör programmet blir resultatet:

Hej! Jack

I ovanstående program addGreetingAndPrint()anropas den kapslade funktionen från den inneslutande funktionen outputMessageByGreeting().

Uttalandet outputMessageByGreeting("Jack")kallar den yttre funktionen. Och uttalandet addGreetingAndPrint()inuti den yttre funktionen kallar metoden som matar ut Hej! Jack i konsolen.

Du kan inte ringa funktionen addGreetingAndPrintutanför funktionen outputMessageByGreeting.

Exempel 2: Kapslad funktion med parametrar och returvärden

Kapslade funktioner kan innehålla funktioner med parametrar och returvärden.

 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ör programmet blir resultatet:

 5

I ovanstående program,

  • den yttre funktionen är operate(), med returvärdet av typen Funktion (Int,Int) -> Int.
  • och de inre (kapslade) funktionerna är add()och subtract().

Den kapslad funktion add()och subtract()på ett sätt används utanför den omslutande funktionen operate(). Detta är möjligt eftersom den yttre funktionen returnerar en av dessa funktioner.

Vi har använt den inre funktionen utanför den inneslutande funktionen operate()som operation(2, 3). Programmet ringer internt add(2, 3)vilka utgångar 5 i konsolen.

Intressanta artiklar...