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
廣告