iOS開發Swift篇—(七)函數

來源:互聯網
上載者:User

標籤:

iOS開發Swift篇—(七)函數

一、函數的定義

(1)函數的定義格式

1 func 函數名(形參列表) -> 傳回值類型  {2     // 函數體...3 4 }

(2)形參列表的格式

形參名1: 形參類型1, 形參名2: 形參類型2, … 

(3)舉例:計算2個整數的和

1 func sum(num1: Int, num2: Int) -> Int {2     return num1 + num23 }

(4)沒有傳回值的函數

  如果函數沒有傳回值,有3種寫法

 1 func 函數名(形參列表) -> Void { 2     // 函數體... 3 } 4  5 func 函數名(形參列表) -> () { 6     // 函數體... 7 } 8  9 func 函數名(形參列表) {10  // 函數體...11 }

(5)沒有形參的函數

  一個函數如果沒有形參,函數名後面的小括弧也不能省略

1 func 函數名() -> Int {2     // 函數體...3 }

  上面的函數沒有形參、傳回值是Int類型

(6)返回元組的函數

一個函數也可以返回元組資料

1 func find(id: Int) -> (name: String, age: Int) {2     if id > 0 {3         return ("jack", 20)4     } else {5         return ("nobody", 0)6     }7 }8 var people = find(2)9 println("name=\(people.name), age=\(people.age)")

 

二、外部參數名

1.簡單說明

一般情況下,通過形式參數的名字,就能推斷出這個參數的含義和作用

1 func addStudent(name: String, age: Int, no: Int) {2     println("新增學生:name=\(name),age=\(age),no=\(no)")3 }

在函數內部一看參數名就知道這3個參數的作用

但是,形式參數是用在函數內部的,當調用函數時就看不見形參的名字,有可能導致以後會不太明白每個參數的含義

對於addStudent("jack", 20, 19)一眼望去,能猜出第1個參數"jack"是指姓名,後面的20、19分別代表什麼含義?

為瞭解決上述問題,Swift提供了外部參數名文法

外部參數名可以在調用函數時提醒每個參數的含義

2.定義

外部參數名的定義格式如下:

1 func 函數名(外部參數名 形式參數名: 形式參數類型) -> 傳回值類型  {2       // 函數體...3 }

外部參數名寫在形式參數名的前面,與形式參數名之間用空格隔開

3.外部參數名的使用

1 func sum(number1 num1: Int, number2 num2: Int) -> Int2 {3     return num1 + num24 }5 sum(number1: 10, number2: 20) // 調用函數

注意:一旦定義了外部參數名,在調用函數時就必須加上外部參數名

4.外部參數名的簡寫

使用#能簡化外部參數名的定義

1 func sum(#num1 : Int, #num2 : Int)2 {3     return num1 + num24 }

第1行代碼的意思:num1、num2既是形式參數名,又是外部參數名

// 調用函數  sum(num1: 10, num2: 20)

 

三、預設參數值

(1)可以在定義函數時,給形參指定一個預設值,調用函數時,就可以不用給這個形參傳值

1 func addStudent(name: String, age: Int = 20) {2     println("添加1個學生:name=\(name),age=\(age)")3 }

addStudent("jack")

age參數有個預設值20,所以第4行調用函數時可以不傳值給age參數

輸出結果是:

添加1個學生:name=jackage=20

 

(2)帶有預設參數值的形參,Swift會自動給它產生一個跟形參名相同的外部參數名

age: Int = 20相當於#age: Int = 20

因此,如果要傳入age參數值時,只能這麼調用

addStudent("jack", age: 25)

 

(3)在帶有預設參數值的參數名前加個底線 _ ,調用函數時就不用寫外部參數名

1 func addStudent(name: String, _ age: Int = 20) {2     println("添加1個學生:name=\(name),age=\(age)")3 }4 5 addStudent("jack", 25)

 

四、常量和變數參數

預設情況下,函數的參數都是常量參數,不能在函數內部修改

1 func test(num: Int) {2     num = 103 }4 5 func test(num: Int)參數相當於func test(let num: Int)

注意:第2行代碼會報錯

在有些情況下,可能需要在函數內部修改參數的值,這時需要定義變數參數

在參數名前面加個var即可

1 func test(var num : Int) {2     num = 10  3 }

// 編寫函數在某個字串的尾部拼接N個其他字串

1 func append(var string: String, suffix: String, count: Int) -> String2 {3     for _ in 0..<count {4         string += suffix5     }6     return string7 }8 append("jack", ".", 4) // 調用函數9 // jack....

 

五、輸入輸出參數

1.什麼是輸入輸出參數?

在C語言中,利用指標可以在函數內部修改外部變數的值

在Swift中,利用輸入輸出參數,也可以在函數內部修改外部變數的值

輸入輸出參數,顧名思義,能輸入一個值進來,也可以輸出一個值到外部

 

2.輸入輸出參數的定義

在參數名前面加個inout關鍵字即可

func swap(inout num1: Int, inout num2: Int) {

}

3.程式碼範例:寫一個函數交換外部2個變數的值

1 func swap(inout num1: Int, inout num2: Int) {2     let tempNum1 = num13     num1 = num24     num2 = tempNum15 }6 var a = 207 var b = 108 swap(&a, &b) // 傳入的參數前面必須加上&9 // 執行完swap函數後,a的值是10,b的值是20

4.輸入輸出參數的使用注意

傳遞實參時,必須在實參的前面加上&

不能傳入常量或者字面量(比如10)作為參數值(因為它們都不可改)

輸入輸出參數不能有預設值

輸入輸出參數不能是可變參數

輸入輸出參數不能再使用let、var修飾(inout和let、var不能共存)

 

輸入輸出參數的價值之一

  可以實現函數的多傳回值(其實讓函數返回元群組類型,也能實現返回多個值)

iOS開發Swift篇—(七)函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.