У овом чланку ћете научити о угнежђеним функцијама у Свифту и како то функционише са примерима.
Ако функција постоји унутар тела друге функције, она се назива угнежђена функција.
Синтакса угнежђене функције
фунц фунцнаме () (// изјаве спољне функције фунц анотхерФунцнаме () (// изјаве унутрашње функције))
Овде је функција 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 на конзоли.