跳到主要内容

Swift中的嵌套函数

提示
  1. 嵌套函数的概念:在 Swift 中,嵌套函数指的是一个函数内部定义的另一个函数。
  2. 示例与应用:嵌套函数可用于组织代码,使其更加模块化和封装。内部函数可以访问外部函数的变量和参数。
  3. 返回嵌套函数:外部函数可以返回嵌套函数作为其返回值,允许在外部函数之外调用内部函数。

在 Swift 中,一个函数可以存在于另一个函数的内部。这称为嵌套函数。

在学习嵌套函数之前,请确保你了解 Swift 函数

嵌套函数的语法

以下是我们在 Swift 中创建嵌套函数的方式。

// 外部函数
func function1() {
// 代码

// 内部函数
func function2() {
// 代码
}

}

这里,函数 function2() 嵌套在外部函数 function1() 内部。

示例 1:Swift 嵌套函数

// 外部函数
func greetMessage() {

// 内部函数
func displayName() {
print("早上好,Abraham!")
}

// 调用内部函数
displayName()
}

// 调用外部函数
greetMessage()

输出

早上好,Abraham

在上述示例中,我们创建了两个函数:

  • greetMessage() - 一个普通函数
  • displayName() - 一个嵌套在 greetMessage() 内部的内部函数

这里,我们从外部函数调用内部函数 displayName()

注意:如果我们尝试从外部函数之外调用内部函数,将会收到错误消息:“使用了未解析的标识符”。

示例 2:带参数的嵌套函数

// 外部函数
func addNumbers() {
print("加法")

// 内部函数
func display(num1: Int, num2: Int) {
print("5 + 10 =", num1 + num2)
}

// 用两个值调用内部函数
display(num1: 5, num2: 10)
}

// 调用外部函数
addNumbers()

输出

加法
5 + 10 = 15

在上述示例中,函数 display() 嵌套在函数 addNumbers() 内部。注意内部函数,

func display(num1: Int, num2: Int) {
...
}

这里,它包含两个参数 num1num2。因此,我们在调用它时传递了 510display(num1: 5, num2: 10))。

示例 3:带返回值的嵌套函数

func operate(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(symbol: "+")
let result = operation(8, 3)
print("结果:", result)

输出

结果: 11

在上述示例中,函数 add()subtract() 嵌套在 operate() 函数内部。注意外部函数的声明,

func operate(symbol: String) -> (Int, Int) -> Int {
...
}

这里,返回类型 (Int, Int) -> Int 指定了外部函数返回一个函数,具有

  • 两个 Int 类型的参数和
  • 一个 Int 类型的返回值。

由于这与内部函数的定义相匹配,外部函数返回其中一个内部函数。

这就是为什么我们能够使用

let result = operation(8, 3)

从外部函数之外调用内部函数。这里,operation(8, 3) 被替换为 add(8, 3)subtract(8, 3),这取决于传递给 operate() 函数的 symbol 的值