Вложени функции в Swift (с примери)

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

Интересни статии...