本教程屬於 Swift 系列的一部分

你的程式碼通常是有組織地以函數的方式進行組織的。

使用 func 關鍵字聲明一個函數:

func bark() {
    print("woof!")
}

函數可以分配給結構、類和列舉,這種情況下我們稱之為方法。

使用函數名稱來呼叫函數:

bark()

函數可以返回一個值:

func bark() -> String {
    print("woof!")
    return "barked successfully"
}

你可以將其賦值給一個變數:

let result = bark()

函數可以接受參數。每個參數都有一個名稱和一個類型:

func bark(times: Int) {
    for index in 0..<times {
        print("woof!")
    }
}

參數的名稱對於函數內部而言是內部名。

在調用函數時,我們使用參數名稱來傳遞其值:

bark(times: 3)

當說起這個函數時,我們不稱其為 bark(),而稱之為 bark(times:repeat:)

這是因為我們可以有多個具有相同名稱但不同參數集的函數。

您可以通過使用 _ 關鍵字來避免使用標籤:

func bark(_ times: Int, repeatBark: Bool) {
    //...函數體
}

這樣您就可以以以下方式調用它:

bark(3, repeatBark: true)

在 Swift 和 iOS API 中,通常第一個參數沒有標籤,而其他參數則被標記。

當您設計函數和參數的名稱時,這可以為 API 提供簡潔易讀的介面。

從一個函數中只能返回一個值。如果需要返回多個值,通常會返回一個元組:

func bark() -> (String, Int) {
    print("woof!")
    return ("barked successfully", 1)
}

你可以將結果賦值給一個元組:

let (result, num) = bark()

print(result) //"barked successfully"
print(num) //1

函數可以嵌套在其他函數內部。在這種情況下,內部函數對外部函數是不可見的。