English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этой статье вы узнаете о внутренних функциях в Swift и о том, как их использовать с примерами.
Если у однойФункцияЕсли функция существует в теле другой функции, то она называется внутренней функцией.
func funcname() { // Строка внешней функции func anotherFuncname() { // Строка внутреннего функции
Здесь функция anotherFuncname расположена в теле другой функции funcname.
Следует отметить, что внутренние функции могут вызываться и использоваться только в пределах封闭ой функции (внешней функции).
func outputMessageByGreeting(_ message: String) { func addGreetingAndPrint() { print("Hello! \(message)") addGreetingAndPrint() outputMessageByGreeting("Jack")
При выполнении этой программы вывод будет:
Hello! Jack
В приведенном выше примере функция addGreetingAndPrint() вызывается из функции outputMessageByGreeting().
Указание outputMessageByGreeting("Jack") вызывает внешнюю функцию. Внутренние инструкции функции addGreetingAndPrint() вызывают вывод Hello Jack!
Вы не можете вызвать функцию addGreetingAndPrint вне функции outputMessageByGreeting.
Внутренние функции могут содержать функции с параметрами и значением возвращения.
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 в консоли.