Swift 嵌套函数

在本教程中,我们将通过示例了解 Swift 中的嵌套函数。

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

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


嵌套函数的语法

下面是我们如何在 swift 中创建嵌套函数。

  1. // outer function
  2. func function1() {
  3. // code
  4. // inner function
  5. func function2() {
  6. // code
  7. }
  8. }

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

实例:嵌套函数
  1. // outer function
  2. func greetMessage() {
  3. // inner function
  4. func displayName() {
  5. print("Good Morning Abraham!")
  6. }
  7. // calling inner function
  8. displayName()
  9. }
  10. // calling outer function
  11. greetMessage()

结果为:

  1. Good Morning Abraham!

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

  • greetMessage() - 常规函数

  • displayName() - 嵌套在 greetMessage() 中的内部函数

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

注意:如果我们试图从外部函数的外部调用内部函数,我们将得到错误消息:use of unresolved identifier


实例 2: 带参数的嵌套函数
  1. // outer function
  2. func addNumbers() {
  3. print("Addition")
  4. // inner function
  5. func display(num1: Int, num2: Int) {
  6. print("5 + 10 =", num1 + num2)
  7. }
  8. // calling inner function with two values
  9. display(num1: 5, num2: 10)
  10. }
  11. // calling outer function
  12. addNumbers()

结果如下:

  1. Addition
  2. 5 + 10 = 15

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

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

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


实例 3:带返回值的嵌套函数
  1. func operate(symbol: String) -> (Int, Int) -> Int {
  2. // inner function to add two numbers
  3. func add(num1:Int, num2:Int) -> Int {
  4. return num1 + num2
  5. }
  6. // inner function to subtract two numbers
  7. func subtract(num1:Int, num2:Int) -> Int {
  8. return num1 - num2
  9. }
  10. let operation = (symbol == "+") ? add : subtract
  11. return operation
  12. }
  13. let operation = operate(symbol: "+")
  14. let result = operation(8, 3)
  15. print("Result:", result)

结果为:

  1. Result: 11

在上面的实例中,函数 add()substract() 嵌套在 operate() 函数中,

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

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

  • 两个 Int 类型的参数和

  • Int 类型的返回值。

因为这与内部函数的函数定义相匹配,所以外部函数返回一个内部函数。

这就是为什么我们能够从外部函数的外部调用内部函数以及使用

  1. let result = operation(8, 3)

这里,根据传递给 operate() 函数的符号值,用 add(8, 3)subtract(8, 3) 替换 operation(8, 3)

分类导航