English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Função Aninhada Swift

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.

Sintaxe 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).

Exemplo1:Funções aninhadas sem valor de retorno

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 .

Exemplo2:Funções aninhadas com parâmetros e valores de retorno

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.