Swift – 嵌套函数
函数是一组语句,它们组合在一起作为一个块来执行特定的任务。函数的返回类型决定了函数返回值的类型。例如,如果我们想从函数中获取整数值,那么函数的返回类型必须是 Int,如果我们想从函数中获取十进制函数,那么返回类型必须是 Float 或 Double 等。 Swift 可能包含也可能不包含任何返回类型。在本文中,我们将学习嵌套函数。
嵌套函数
在 Swift 中,当一个函数存在于另一个函数中时,这种类型的函数称为嵌套函数。嵌套函数隐藏在外部函数内部或封闭,如果我们尝试访问它们,外部函数无法访问它们,我们将出错。它们只能被它们封闭的函数调用和使用。
句法:
func myFunction1
{
// body of myFunction1
func myFunction2
{
// body of myFunction2
}
}
这里,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