Neste artigo, você aprenderá sobre funções aninhadas no Swift e como elas funcionam com exemplos.
Se uma função existe dentro do corpo de outra função, é chamada de função aninhada.
Sintaxe de uma função aninhada
func funcname () (// instruções da função externa func anotherFuncname () (// instruções da função interna))
Aqui, a função anotherFuncnameestá dentro do corpo de outra função funcname.
Deve-se observar que as funções internas só podem ser chamadas e usadas dentro da função delimitadora (função externa).
Exemplo 1: função aninhada sem valores de retorno
func outputMessageByGreeting(_ message: String) ( func addGreetingAndPrint() ( print("Hello! (message)") ) addGreetingAndPrint() ) outputMessageByGreeting("Jack")
Quando você executa o programa, a saída será:
Olá! Jack
No programa acima, a função aninhada addGreetingAndPrint()está sendo chamada a partir da função envolvente outputMessageByGreeting().
A instrução outputMessageByGreeting("Jack")chama a função externa. E a instrução addGreetingAndPrint()dentro da função externa chama o método que produz Hello! Jack no console.
Você não pode chamar a função addGreetingAndPrintfora da função outputMessageByGreeting.
Exemplo 2: função aninhada com parâmetros e valores de retorno
As 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 você executa o programa, a saída será:
5
No programa acima,
- a função externa é
operate(), com valor de retorno do tipo Function(Int,Int) -> Int. - e as funções internas (aninhadas) são
add()esubtract().
A função aninhada add()e subtract()de certa forma está sendo usada fora da função envolvente operate(). Isso é possível porque a função externa retorna uma dessas funções.
Usamos a função interna fora da função envolvente operate()como operation(2, 3). O programa chama internamente o add(2, 3)que produz 5 no console.








