Вкладені функції в 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(), із поверненим значенням типу Function (Int,Int) -> Int.
  • а внутрішніми (вкладеними) функціями є add()і subtract().

Вкладена функція add()і subtract()певним чином використовується поза функцією, що включає operate(). Це можливо, оскільки зовнішня функція повертає одну з цих функцій.

Ми використовували внутрішню функцію поза функцією, що обгороджує, operate()як operation(2, 3). Програма внутрішньо викликає, add(2, 3)що виводить 5 на консоль.

Цікаві статті...