Swift – Función anidada

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

Publicación traducida automáticamente

Artículo escrito por bhuwanesh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *