Swift - 函式與方法



在 Swift 中,函式和方法都是程式碼最佳化和封裝的基本構建塊。理解函式和方法之間的區別可能會令人困惑,但我們可能會認為它們都是一樣的。事實並非如此。方法用於類、結構體和列舉中。

它們在該型別的例項上呼叫,並訪問和修改例項的屬性。而函式則獨立定義或全域性定義,無需建立類或結構體。或者我們可以說方法是一種函式,而函式不是方法。

Swift 函式

函式用於執行特定的操作,並透過其名稱呼叫。在呼叫函式時,傳遞變數或常量作為引數非常簡單。此外,我們還可以從任何型別的函式中返回值。一個獨立於檔案工作的函式也可以在檔案外部定義。

語法

以下是函式的語法:

func functionName(parameters...) -> returnType {
   //Write statements here to perform actions
}

示例

Swift 程式演示如何建立和呼叫函式。

// Function without return value
func show(msg: String) {
   print("Welcome to, \(msg)!")
}

// Function call
show(msg: "Tutorials Point")

// Function with return value
func sumOfNumbers(_ nums: [Int]) -> Int {
   var sum = 0

   // Calculating the sum of the numbers present in the array
   for n in nums {
      sum += n
   }
   return sum
}

// Function call with return value
let inputNumbers = sumOfNumbers([3, 5, 6, 7, 1]) 
print("Sum = \(inputNumbers)")

輸出

它將產生以下輸出:

Welcome to, Tutorials Point!
Sum = 22

Swift 方法

方法是一種函式,可以在類、結構體和列舉中定義。使用方法,我們可以根據您的需求執行某些操作。根據我們的需要,我們可以定義多個方法來執行不同的任務。

要訪問類或結構體中定義的方法,我們必須建立關聯型別的例項。使用該物件,我們可以呼叫方法來執行任務。就像函式一樣,我們也可以在呼叫方法時傳遞引數。始終記住,在不建立該類或結構體的物件的情況下,我們無法訪問方法。

在 Swift 語言中,有兩種型別的方法,如下所示:

  • 例項方法 - 根據其名稱,這些是特定於例項的方法,可以透過例項呼叫。如果我們嘗試在沒有該類或結構體的例項的情況下訪問方法,編譯器將給我們一個錯誤。此外,我們不能從另一個類的例項呼叫類的 (例如類 Student) 方法。

  • 型別方法 - 在 Swift 中,我們可以使用靜態或類等字首關鍵字定義型別方法。無需建立類或結構體的例項即可呼叫型別方法。它們可以直接從型別名稱呼叫。

語法

以下是方法的語法:

func methodName(parameters...) -> returnType {
   //Write statements here to perform actions
}

示例

Swift 程式演示如何建立和呼叫方法。

// Defining a structure 
struct Student {
    
   // Properties 
   let name: String
   let grade: Int
    
   // Instance method
   func displayInfo() {
      print("name: \(name)")
      print("grade: \(grade)")
   }
    
   // Type method
   static func dummyStudents() -> [Student] {
      return [Student(name: "Ray Sin", grade: 4),
      Student(name: "Cherry Blossom", grade: 2),
      Student(name: "Perry Scope", grade: 7)]
   }
}

// Creating instance of the structure
let anne = Student(name: "Anne Teak", grade: 5)

// Calling instance method from object anne
anne.displayInfo()

// Calling type method
let students = Student.dummyStudents()
print("number of students: ", students.count)

輸出

它將產生以下輸出:

name: Anne Teak
grade: 5
number of students:  3

函式與方法之間的視覺識別

Swift 語言顯示瞭如何表示函式和方法。可以看出,兩者都表示如下:

  • 函式的圖示類似於ƒ

  • 方法的圖示為M

Visual Identification

Swift 中方法和函式的區別

下表將顯示 Swift 中方法和函式的主要區別:

函式 方法
函式被定義為獨立的。因此,我們可以在類外部定義函式。 它們與類或結構體本身相關聯。在範圍之外,您無法定義方法。
函式是 C/C++ 等結構化語言的獨立屬性。 方法在物件的範圍內工作,類似於 C#、Java、Swift 等面嚮物件語言。
函式不會捕獲任何引用變數或常量。 方法只能使用引用變數(或例項)呼叫。
雖然函式不屬於類,但它們單獨執行。 方法被定義為操縱該類或結構體的特定例項。
無需建立物件即可呼叫它們。 需要一個物件才能訪問它們。
簡單來說,並非每個函式都是方法。 而每個方法都是一個函式。
廣告