📜  Swift – 嵌套函数

📅  最后修改于: 2022-05-13 01:55:46.190000             🧑  作者: Mango

Swift – 嵌套函数

函数是一组语句,它们组合在一起作为一个块来执行特定的任务。函数的返回类型决定了函数返回值的类型。例如,如果我们想从函数中获取整数值,那么函数的返回类型必须是 Int,如果我们想从函数中获取十进制函数,那么返回类型必须是 Float 或 Double 等。 Swift 可能包含也可能不包含任何返回类型。在本文中,我们将学习嵌套函数。

嵌套函数

在 Swift 中,当一个函数存在于另一个函数中时,这种类型的函数称为嵌套函数。嵌套函数隐藏在外部函数内部或封闭,如果我们尝试访问它们,外部函数无法访问它们,我们将出错。它们只能被它们封闭的函数调用和使用。

句法:

这里,myFunction1 是外部函数,myFunction2 是内部函数。

没有返回类型的嵌套函数

与普通函数一样,嵌套函数可能不包含任何返回类型。下面解释了没有返回类型的嵌套函数的工作。

例子:

在下面的程序中,我们从外部函数外部调用了外部函数“myFunction1()”。一旦调用了这个函数,程序的控制流就会进入“myFunction1()”并到达我们调用函数的语句“myFunction2()”。现在,将调用此函数,该函数使用 print()函数打印字符串。执行此语句后,程序的控制流来自内部函数,然后是外部函数,依此类推。

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()


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)


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)


输出:

GeeksforGeeks

有参数的嵌套函数

像函数一样,嵌套函数也可以包含参数。下面解释具有参数的嵌套函数的工作。

例子:

在下面的程序中,我们通过传递两个参数 num1: 2 和 num2: 3 作为参数从外部函数外部调用了外部函数“add()”。一旦调用了这个函数,程序的控制流就会进入“add()”函数,并到达我们计算两个整数之和的语句。现在,“totalSum”被传递给内部函数“printSum()”,我们在其中使用打印函数打印由变量 totalSum 表示的值。

迅速

// 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)

输出:

Sum of 2 and 3 is equal to : 5

具有返回类型的嵌套函数

同样,像函数一样,嵌套函数可能包含返回类型。下面解释具有返回类型的嵌套函数的工作。

例子:

在下面的程序中,我们通过传递两个参数 num1: 8 和 num2: 3 作为参数从外部函数外部调用了外部函数“add()”。请注意,此函数的返回类型是 Int。一旦调用了这个函数,程序的控制流就会进入“add()”函数,并到达我们计算两个整数之和的语句。现在,“totalSum”被传递给内部函数“multiplySum()”,其返回类型也是 Int。在此函数中,总和乘以 2,然后将值返回给函数调用语句。最终答案存储在外部函数中的变量 answer 中。

迅速

// 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)

输出:

Result: 22