Funciones anidadas en Swift (con ejemplos)

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

Si una función existe dentro del cuerpo de otra función, se llama función anidada.

Sintaxis de una función anidada

 func funcname () (// declaraciones de la función externa func anotherFuncname () (// declaraciones de la función interna)) 

Aquí, la función anotherFuncnameestá dentro del cuerpo de otra función funcname.

Cabe señalar que las funciones internas solo se pueden llamar y usar dentro de la función envolvente (función externa).

Ejemplo 1: función anidada sin valores de retorno

 func outputMessageByGreeting(_ message: String) ( func addGreetingAndPrint() ( print("Hello! (message)") ) addGreetingAndPrint() ) outputMessageByGreeting("Jack") 

Cuando ejecute el programa, la salida será:

¡Hola! Jack

En el programa anterior, la función anidada addGreetingAndPrint()se llama desde la función adjunta outputMessageByGreeting().

La declaración outputMessageByGreeting("Jack")llama a la función externa. Y la declaración addGreetingAndPrint()dentro de la función externa llama al método que genera Hello! Jack en la consola.

No puede llamar a la función addGreetingAndPrintfuera de la función outputMessageByGreeting.

Ejemplo 2: función anidada con parámetros y valores de retorno

Las funciones anidadas pueden contener funciones con parámetros y 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) 

Cuando ejecute el programa, la salida será:

 5

En el programa anterior,

  • la función externa es operate(), con valor de retorno de tipo Función (Int,Int) -> Int.
  • y las funciones internas (anidadas) son add()y subtract().

La función anidada add()y, subtract()de alguna manera, se están utilizando fuera de la función adjunta operate(). Esto es posible porque la función externa devuelve una de estas funciones.

Hemos utilizado la función interna fuera de la función adjunta operate()como operation(2, 3). El programa llama internamente a add(2, 3)la salida 5 en la consola.

Articulos interesantes...