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

Funciones anidadas Swift

En este artículo, aprenderás sobre las funciones anidadas en Swift y cómo se utilizan con ejemplos.

Si unFunciónExiste dentro del cuerpo de otra función, se llama función anidada.

Sintaxis de funciones anidadas

func funcname() {
    //Sentencias de función externa
    func anotherFuncname() {
        //Sentencias de función interna
    }
}

Aquí, la función anotherFuncname se encuentra dentro del cuerpo de otra función funcname.

Debes tener en cuenta que las funciones internas solo pueden ser llamadas y utilizadas dentro de la función que las contiene (función externa).

Ejemplo1:Funciones anidadas sin valor de retorno

func outputMessageByGreeting(_ mensaje: String) {
    
    func addGreetingAndPrint() {
        print("¡Hola! \(mensaje)")
    }
    addGreetingAndPrint()
}
outputMessageByGreeting("Jack")

La salida del programa cuando se ejecuta es:

¡Hola! Jack

En el programa anterior, se llamó a la función anidada addGreetingAndPrint() desde la función cerrada outputMessageByGreeting().

La语句 outputMessageByGreeting("Jack") llama a la función externa. La语句 dentro de la función externa addGreetingAndPrint() llama a imprimir ¡Hola Jack!

No puedes llamar a la función addGreetingAndPrint fuera de la función outputMessageByGreeting.

Ejemplo2:Funciones anidadas con parámetros y valores de retorno

Las funciones anidadas pueden contener funciones con parámetros y valores de retorno.

func operar(con(simbolo: String)) -> (Int, Int) -> Int {
    
    func sumar(num1:Int, num2:Int) -> Int {
        devolver num1 + num2
    }
    
    func restar(num1:Int, num2:Int) -> Int {
        devolver num1 - num2
    }
    let operation = (symbol == "+) ? add : subtract
    return operation
}
let operation = operate(with: "+)
let result = operation(2, 3)
print(result)

La salida del programa cuando se ejecuta es:

5

En el programa anterior,

  • La función externa es operate(), que devuelve un tipo de función (Int,Int) -> Int.

  • Las funciones internas (anidadas) son add() y subtract().

La forma en que se están utilizando las funciones anidadas add() y subtract() está fuera de la función cerrada operate(). Esto es posible porque la función externa devuelve una de estas funciones.

Hemos utilizado funciones internas (cerradas) fuera de la función cerrada operate() como operation(2,3) Llamada interna a add(2,3) Salida en la consola de control5.