Funções aninhadas em Swift (com exemplos)

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()e subtract().

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.

Artigos interessantes...