В тази статия ще научите за вложени функции в Swift и как работи с примери.
Ако функция съществува в тялото на друга функция, тя се нарича вложена функция.
Синтаксис на вложена функция
func funcname () (// изявления на външна функция func anotherFuncname () (// изявления на вътрешна функция))
Тук функцията anotherFuncnameе вътре в тялото на друга функция funcname.
Трябва да се отбележи, че вътрешните функции могат да се извикват и използват само в заграждащата функция (външна функция).
Пример 1: Вложена функция без връщани стойности
func outputMessageByGreeting(_ message: String) ( func addGreetingAndPrint() ( print("Hello! (message)") ) addGreetingAndPrint() ) outputMessageByGreeting("Jack")
Когато стартирате програмата, изходът ще бъде:
Здравейте! Джак
В горната програма вложената функция addGreetingAndPrint()се извиква от заграждащата функция outputMessageByGreeting().
Операторът outputMessageByGreeting("Jack")извиква външната функция. И изявлението addGreetingAndPrint()във външната функция извиква метода, който извежда Hello! Джак в конзолата.
Не можете да извикате функцията 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 в конзолата.








