原文: https://www.programiz.com/swift-programming/nested-functions
在本文中,您将了解 Swift 中的嵌套函数及其如何与示例一起使用。
如果函数存在于另一个函数的主体内,则称为嵌套函数。
嵌套函数的语法
func funcname() {//statements of outer functionfunc anotherFuncname() {//statements of inner function}}
在此,函数anotherFuncname在另一个函数funcname的主体内部。
应当注意,内部函数只能在封闭函数(外部函数)内部调用和使用。
示例 1:没有返回值的嵌套函数
func outputMessageByGreeting(_ message: String) {func addGreetingAndPrint() {print("Hello! \(message)")}addGreetingAndPrint()}outputMessageByGreeting("Jack")
运行该程序时,输出为:
Hello! Jack
在上述程序中,正在从封闭函数outputMessageByGreeting()调用嵌套函数addGreetingAndPrint()。
语句outputMessageByGreeting("Jack")调用外部函数。 并且外部函数内部的语句addGreetingAndPrint()调用输出Hello! Jack。
您不能在函数outputMessageByGreeting之外调用函数addGreetingAndPrint。
示例 2:具有参数和返回值的嵌套函数
嵌套函数可以包含带有参数和返回值的函数。
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 : subtractreturn operation}let operation = operate(with: "+")let result = operation(2, 3)print(result)
运行该程序时,输出为:
5
在上面的程序中
- 外部函数为
operate(),返回值类型为Function(Int,Int) -> Int。 - 内部(嵌套)函数为
add()和subtract()。
嵌套函数add()和subtract()在封装函数operate()之外正在使用。 这是可能的,因为外部函数返回这些函数之一。
我们将封闭函数operate()之外的内部函数用作operation(2, 3)。 程序内部调用add(2, 3),在控制台中输出 5。
