English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Neste artigo, você aprenderá sobre funções aninhadas em Swift e como usá-las com exemplos.
Se umFunçãoSe existir dentro do corpo de outra função, é chamada de função aninhada.
func funcname() { //Sentenças de função externa func anotherFuncname() { //Sentenças de função interna } }
Aqui, a função anotherFuncname está dentro do corpo da função funcname .
Deve-se notar que as funções internas podem ser chamadas e usadas apenas dentro da função que as contém (função externa).
func outputMessageByGreeting(_ message: String) { func addGreetingAndPrint() { print("Hello! \(message)") } addGreetingAndPrint() } outputMessageByGreeting("Jack")
Quando o programa é executado, a saída é:
Hello! Jack
No programa acima, a função aninhada addGreetingAndPrint () foi chamada da função encerrada outputMessageByGreeting ().
A expressão outputMessageByGreeting("Jack") chama a função externa. A expressão dentro da função externa addGreetingAndPrint() chama a saída Hello Jack!
Você não pode chamar a função addGreetingAndPrint fora da função outputMessageByGreeting .
Funções aninhadas podem conter funções com parâmetros e valores de retorno.
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)
Quando o programa é executado, a saída é:
5
No programa acima,
A função externa é operate(), que retorna o tipo Function (Int,Int) -> Int.
As funções internas (aninhadas) são add() e subtract().
A maneira como estão sendo usados os funções aninhadas add() e subtract() está fora da função encerrada operate(). Isso é possível porque a função externa retorna uma dessas funções.
Já usamos funções internas além da função encerrada operate() como operation(2,3) Chamada Interna no Código2,3) Imprimir no Console5.