iOS開發Swift篇—(八)函數(2)

來源:互聯網
上載者:User

標籤:

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)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.