讀古今文學網 > iOS編程基礎:Swift、Xcode和Cocoa入門指南 > 1.5 函數 >

1.5 函數

如fido.bark()或one=two這樣的可執行代碼不能隨意放置。一般來說,這樣的代碼必須要位於函數體中。函數由一系列代碼構成,並且可以運行。一般來說,函數有一個名字,這個名字是通過函數聲明得到的。函數聲明語法的細節將會在後面進行詳細介紹,先來看一個示例:


func go {
    let one = 1
    var two = 2
    two = one
}  

上述代碼描述了要做的一系列事情——聲明one、聲明two,將one值賦給two——並且給這一系列代碼賦予一個名字go;不過該代碼序列並不會執行。只有在調用函數時,該代碼序列才會執行。我們可以在其他地方這樣執行:


go  

這會向go函數發出一個命令,這樣go函數才會真正運行起來。重申一次,命令本身是可執行代碼,因此它不能位於自身當中。它可以位於不同的函數體中:


func doGo {
    go
}  

請等一下!這麼做有點奇怪。上面是一個函數聲明;要想運行該函數,你需要調用doGo,它才是可執行代碼。這看起來像是無窮無盡的循環一樣;似乎代碼永遠都不會運行。如果所有代碼都必須位於一個函數中,那麼誰來讓函數運行呢?初始動力一定來自於其他地方。

幸好,在實際情況下,這個問題並不會出現。記住,你的最終目標是編寫iOS應用。因此,應用會運行在iOS設備(或是模擬器)中,由運行時調用,而運行時已經知道該調用哪些函數了。首先編寫一些特殊函數,這些函數會由運行時本身來調用。這樣,應用就可以啟動了,並且可以將函數放到運行時在某些時刻會調用的地方——比如,當應用啟動時,或是當用戶輕拍應用界面上的按鈕時。

Swift還有一個特殊的規則,那就是名為main.swift的文件可以在頂層包含可執行代碼,這些代碼位於任何函數體的外部,當程序運行時真正執行的其實就是這些代碼。你可以通過main.swift文件來構建應用,不過一般來說沒必要這麼做。