本文概述
另一个函数体内的函数称为嵌套函数。
句法:
func function1() {
//statements of outer function
func function2() {
//statements of inner function
}
}
参数说明:
此处, function1是外部函数, 因为在function1内部还有另一个名为function2(嵌套函数)的函数。
注意:内部函数只能在外部函数内部调用和使用。
没有返回值的嵌套函数
func wish1(_ message: String) {
func wish2() {
print("Good Morning! \(message)")
}
wish2 ()
}
wish1("Ajeet")
输出
Good Morning! Ajeet
在上面的程序中, 从外部函数wish1()调用嵌套函数wish2()。
语句wish1(” Ajeet”)调用外部函数, 而语句wish2()调用外部函数, 该方法给出输出Good Morning Ajeet。
你不能在wish1函数之外调用wish2函数。
带参数和返回值的嵌套函数
嵌套函数还可以包含参数和返回值。
例:
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 : subtract
return operation
}
let operation = operate(with: "+")
let result = operation(10, 20)
print(result)
输出
30
在上面的程序中
- 外部函数是operation(), 其返回值类型为Function(Int, Int)-> Int。
- 内部(嵌套)函数是add()和减去()。
嵌套函数add()和减去()在封闭函数operate()之外被使用。这是可能的, 因为外部函数返回这些函数之一。
我们已将封闭函数operate()之外的内部函数用作operation(10, 20)。该程序在内部调用add(10, 20), 该输出提供输出30。