Swift - 嵌套函数



函数是一组语句块,用于执行特定任务。当一个函数定义在另一个函数内部时,这种类型的函数被称为嵌套函数。嵌套函数的作用域仅限于其定义所在的函数,这意味着它们只能在其外部函数内部访问。如果尝试在外部函数之外访问它们,则会报错。

  • 在 Swift 中,单个函数可以包含多个嵌套函数,并且必须在调用它们之前定义它们。

  • 嵌套函数提高了可读性,并通过将复杂任务分解成更小、可重用的组件来组织这些任务。

  • 嵌套函数将逻辑封装在有限的作用域内,并可以防止外部访问。

  • 它们只能访问其外部函数的变量。

嵌套函数的语法

以下是嵌套函数的语法:

func outerFunction(){
   func nestedFunction(){
      // code
   }
   func nestedFunction2(){
      //code
   }
   nestedFunction1() 
   nestedFunction2()
}

Swift 中无参数的嵌套函数

在 Swift 中,可以定义没有任何参数的嵌套函数。这种类型的函数在调用时不接受任何参数,并且可能返回或不返回值。

语法

以下是无参数列表的嵌套函数的语法:

func nestedFunction(){
   // Code
}

示例

使用嵌套函数显示世界杯冠军名称的 Swift 程序。

import Foundation

// Outer function
func worldCupTrophy(){

   // Nested function without parameter list
   func winnerName() {
      print("Winner of World Cup is INDIA")
   }    
   // Calling nested function
   winnerName()
}
// Calling the outer function to display the result
worldCupTrophy()

输出

它将产生以下输出:

Winner of World Cup is INDIA

Swift 中带有参数的嵌套函数

嵌套函数可以包含参数列表而没有返回类型。这种类型的嵌套函数只能访问外部函数的变量和参数。嵌套函数可以包含多个参数,它们由参数标签分隔。

语法

以下是带有参数的嵌套函数的语法:

func nestedFunction(name1: Int, name2: Int){
   // code
} 

示例

使用嵌套函数添加两个字符串的 Swift 程序。

import Foundation

// Outer function
func concatenateStrings(str1: String, str2: String){

   // Nested function with parameter list
   func displayResult(finalStr: String) {
      print("Concatenated String: \(finalStr)")
   }
   let result = str1 + str2
    
   // Calling nested function
   displayResult(finalStr: result)
}

// Input strings
var string1 = "Welcome "
var string2 = "TutorialsPoint"

// Calling the outer function to display the result
concatenateStrings(str1: string1, str2: string2)

输出

它将产生以下输出:

Concatenated String: Welcome TutorialsPoint

Swift 中无返回类型的嵌套函数

无返回类型的嵌套函数不返回值。它可能包含或不包含参数。

语法

以下是无返回类型的嵌套函数的语法:

func nestedFunction(name: Int){
   // code
   return
} 

示例

使用嵌套函数计算矩形面积的 Swift 程序。

import Foundation

// Outer function
func Rectangle(length: Int, width: Int){

   // Nested function without return type  
   func displayArea(finalArea: Int) {
      print("Area of Rectangle: \(finalArea)")
   }
   let result = length * width 
    
   // Calling nested function
   displayArea(finalArea: result)
}

// Input strings
var l = 10
var w = 12

// Calling the outer function to display the result
Rectangle(length: l, width: w)

输出

它将产生以下输出:

Area of Rectangle: 120

Swift 中有返回类型的嵌套函数

嵌套函数可以包含参数列表而没有返回类型。有返回类型的嵌套函数总是返回某些值。

语法

以下是带有返回类型的嵌套函数的语法:

func nestedFunction(name1: Int, name2: Int) -> ReturnType{
   // code
   return
} 

示例

使用嵌套函数计算两个图形(矩形和正方形)的总面积的 Swift 程序。

import Foundation

// Outer function without return type
func Areas(length: Int, width: Int){

   // Nested function with return type
   func sumOfAreas(area1: Int, area2: Int)-> Int {
    
      let Sum = area1 + area2
      return Sum
        
   }
   let areaOfRectangle = length * width
   let areaOfSquare = length * length
    
   // Calling nested function
   print("Total Area: \(sumOfAreas(area1: areaOfRectangle, area2: areaOfSquare))")
}

// Calling the outer function to display the result
Areas(length: 23, width: 25)

输出

它将产生以下输出:

Total Area: 1104
广告