標籤:
iOS開發Swift篇—(八)函數(2)
一、函數類型
函數類型也是資料類型的一種,它由形參類型和傳回值類型組成,格式是
(形參類型列表) -> 傳回值類型
1 func sum(num1: Int, num2: Int) -> Int {2 return num1 + num23 }
sum函數的函數類型是(Int, Int) -> Int
1 func printLine()2 {3 println("-----------")4 }
printLine函數的函數類型有4種表示方法
(1)Void -> Void
(2)() -> ()
(3)Void -> ()
(4)() -> Void
二、利用函數類型定義變數
可以利用函數類型來定義變數,將來可以儲存這種類型的函數
1 func sum(num1: Int, num2: Int) -> Int {2 return num1 + num23 }4 var fn: (Int, Int) -> Int = sum5 fn(10, 20) // 返回30
由於Swift有類型推斷機制,因此,也可以這麼寫
var fn = sum // fn以後所儲存函數的類型就必須是(Int, Int) -> Int
三、函數作為參數
跟其他資料類型一樣,函數也能當函數的參數
1 func printResult(fn: (Int, Int) -> Int, num1: Int, num2: Int) 2 {3 println("運算結果是:%d", fn(num1, num2))4 }
fn參數接收一個函數,這個函數必須返回Int、有2個Int類型的參數
1 func sum(num1: Int, num2: Int) -> Int {2 return num1 + num23 }4 func minus(num1: Int, num2: Int) -> Int {5 return num1 - num26 }7 printResult(sum, 20, 10) // 308 printResult(minus, 20, 10) // 10
四、函數作為傳回值
跟其他資料類型一樣,函數也能當函數的傳回值
1 func goToWork() { println("去上班") } 2 func playFootball() { println("踢足球") } 3 func howToDo(day: Int) -> () -> () { 4 if day < 6 { 5 return goToWork 6 } else { 7 return playFootball 8 } 9 }10 var fn = howToDo(7)11 fn() 12 // 踢足球
五、函數重載
函數重載:函數名相同,函數類型不同
下面的2個函數構成重載
(1)函數名:sum,函數類型:(Int, Int) -> Int
1 func sum(num1: Int, num2: Int) -> Int {2 return num1 + num23 }
(2)函數名:sum,函數類型:(Int, Int, Int) -> Int
1 func sum(num1: Int, num2: Int, num3: Int) -> Int {2 return num1 + num2 + num33 }
六、嵌套函數
全域函數:在全域範圍中定義的函數
嵌套函數:在某個函數體中定義的函數
程式碼範例:
1 func howToDo(day: Int) -> () -> () { 2 func goToWork() { println("去上班") } 3 func playFootball() { println("踢足球") } 4 if day < 6 { 5 return goToWork 6 } else { return playFootball } 7 } 8 var fn = howToDo(5) 9 fn() // 去上班10 goToWork()
注意:第10行是錯誤寫法,嵌套函數的範圍僅限於定義嵌套函數的函數體內部
iOS開發Swift篇—(八)函數(2)