Una función es una colección de declaraciones agrupadas como un bloque para realizar una tarea específica. El tipo de retorno de una función decide el tipo de valor devuelto por la función. Por ejemplo, si queremos obtener un valor entero de una función, el tipo de retorno de la función debe ser Int, si queremos obtener un valor decimal de una función, el tipo de retorno debe ser Flotante o Doble, etc. Una función en Swift puede o no contener ningún tipo de devolución. En este artículo, aprenderemos funciones anidadas.
Funciones anidadas
En Swift, cuando una función existe dentro de otra función, este tipo de funciones se conocen como funciones anidadas. La función anidada está oculta dentro de la función externa o encerrada y las funciones externas no pueden acceder a ella si intentamos acceder a ellas, cometeremos un error. Solo pueden ser llamados y utilizados por su función adjunta.
Sintaxis:
func miFuncion1
{
// cuerpo de myFunction1
func miFuncion2
{
// cuerpo de myFunction2
}
}
Aquí, myFunction1 es la función externa y myFunction2 es la función interna.
Función anidada que no tiene tipo de retorno
Como una función normal, una función anidada no puede contener ningún tipo de retorno. El funcionamiento de una función anidada que no tiene tipo de retorno se explica a continuación.
Ejemplo:
En el siguiente programa, hemos llamado a la función externa, «myFunction1()» desde fuera de la función externa. Una vez que se llama a esta función, el flujo de control del programa va dentro de “myFunction1()” y llega a la declaración en la que estamos llamando a la función, “myFunction2()”. Ahora, se llamaría a esta función que imprime una string usando una función print(). Después de ejecutar esta declaración, el flujo de control del programa sale de la función interna, luego de la función externa y así sucesivamente.
Swift
// Swift program to demonstrate the working // of nested functions having no return type // Outer function having another function // to print a string func myFunction1() { // Inner function having print statement func myFunction2() { print("GeeksforGeeks") } // Calling inner function inside of // the outer function myFunction2() } // Driver code // Calling outer function outside // of the other function myFunction1()
Producción:
GeeksforGeeks
Función anidada que tiene parámetros
Al igual que una función, una función anidada también puede contener parámetros. El funcionamiento de una función anidada que tiene parámetros se explica a continuación.
Ejemplo:
En el siguiente programa, hemos llamado a la función externa, «agregar()» desde fuera de la función externa al pasar dos parámetros num1: 2 y num2: 3 como parámetros. Una vez que se llama a esta función, el flujo de control del programa va dentro de la función “sumar()” y llega a la sentencia en la que estamos calculando la suma de los dos enteros. Ahora, «totalSum» se pasa a la función interna, «printSum()» en la que estamos imprimiendo el valor representado por la variable totalSum usando una función de impresión.
Swift
// Swift program to demonstrate the working // of nested function having parameters // Outer function to add two integers func add(num1: Int, num2: Int) { // Inner function to print the desired sum func printSum(sum: Int) { // Print statement print("Sum of 2 and 3 is equal to :", sum) } // Calling inner function inside of // the outer function let totalSum = num1 + num2 // Calling inner function printSum(sum : totalSum) } // Driver code // Calling outer function outside of // the other function add(num1: 2, num2: 3)
Producción:
Sum of 2 and 3 is equal to : 5
Función anidada que tiene un tipo de retorno
Nuevamente, como una función, una función anidada puede contener un tipo de retorno. El funcionamiento de una función anidada que tiene un tipo de retorno se explica a continuación.
Ejemplo:
En el siguiente programa, hemos llamado a la función externa, «agregar()» desde fuera de la función externa al pasar dos parámetros num1: 8 y num2: 3 como parámetros. Tenga en cuenta que el tipo de retorno de esta función es Int. Una vez que se llama a esta función, el flujo de control del programa va dentro de la función “sumar()” y llega a la sentencia en la que estamos calculando la suma de los dos enteros. Ahora, «totalSum» se pasa a la función interna, «multiplySum()» cuyo tipo de devolución también es Int. En esta función, la suma se multiplica por dos y luego el valor se devuelve a la declaración de llamada de la función. La respuesta final se almacenó en la variable, respuesta dentro de la función externa.
Swift
// Swift program to demonstrate the working of // swift nested functions having return types // Outer Function to add two integers // Inside this function we are calling // inner function. It multiplies the // sum by two and returns the value func add(num1: Int, num2: Int) -> Int{ // Inner function func multiplySum(sum : Int) -> Int{ // Return the result from the inner function return 2 * sum } // Calculates total sum let totalSum = num1 + num2 // Calculate the final answer by calling // inner function let answer = multiplySum(sum: totalSum) // Return the final answer from the outer function return answer } // Driver code // Store the answer returned by add function let result = add(num1 : 8, num2: 3) // Print the answer print("Result:", result)
Producción:
Result: 22