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 anotherFuncname
está 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 addGreetingAndPrint
fuera 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()
ysubtract()
.
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.