Угнежђене функције у Свифту (са примерима)

У овом чланку ћете научити о угнежђеним функцијама у Свифту и како то функционише са примерима.

Ако функција постоји унутар тела друге функције, она се назива угнежђена функција.

Синтакса угнежђене функције

 фунц фунцнаме () (// изјаве спољне функције фунц анотхерФунцнаме () (// изјаве унутрашње функције)) 

Овде је функција anotherFuncnameунутар тела друге функције funcname.

Треба напоменути да се унутрашње функције могу позивати и користити само унутар функције која ограђује (спољна функција).

Пример 1: Угњежђена функција без повратних вредности

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

Када покренете програм, излаз ће бити:

Здраво! Јацк

У горњем програму, угнежђена функција addGreetingAndPrint()се позива из функције која укључује outputMessageByGreeting().

Изјава outputMessageByGreeting("Jack")позива спољну функцију. А изјава addGreetingAndPrint()унутар спољне функције позива методу која даје Хелло! Џек у конзоли.

Не можете позвати функцију addGreetingAndPrintизван функције outputMessageByGreeting.

Пример 2: Угњежђена функција са параметрима и повратним вредностима

Угњежђене функције могу садржати функције са параметрима и повратним вредностима.

 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) 

Када покренете програм, излаз ће бити:

 5

У горњем програму,

  • спољна функција је operate(), са повратном вредношћу типа Фунцтион (Int,Int) -> Int.
  • а унутрашње (угнежђене) функције су add()и subtract().

Угнеждена функција add()и subtract()на неки начин се користе изван функције која укључује operate(). То је могуће јер спољна функција враћа једну од ових функција.

Користили смо унутрашњу функцију изван функције затварања operate()као operation(2, 3). Програм интерно позива add(2, 3)који даје 5 на конзоли.

Занимљиви Чланци...