📜  Swift嵌套函数

📅  最后修改于: 2020-10-09 15:55:49             🧑  作者: Mango

在本文中,您将学习Swift中的嵌套函数及其如何与示例一起使用。

如果一个函数存在于另一个函数的主体内,则称为嵌套函数。

嵌套函数的语法
func funcname() {
    //statements of outer function
    func anotherFuncname() {
        //statements of inner function
    }
}

在这里, 函数 anotherFuncname在另一个函数 funcname

应该注意的是,内部函数只能在封闭函数 (外部函数)内部调用和使用。


示例1:没有返回值的嵌套函数
func outputMessageByGreeting(_ message: String) {
    
    func addGreetingAndPrint() {
        print("Hello! \(message)")
    }
    addGreetingAndPrint()
}
outputMessageByGreeting("Jack")

运行该程序时,输出为:

Hello! Jack

在上述程序中,嵌套函数 addGreetingAndPrint()是从封闭函数 outputMessageByGreeting()调用的。

语句outputMessageByGreeting("Jack")调用外部函数。外部函数的语句addGreetingAndPrint()调用输出Hello的方法控制台中的杰克

您不能在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 : subtract
    return 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。