В тази статия ще научите за вложени функции в 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 в конзолата.