iOS开发Swift篇—(七)函数(1)
一、函數(shù)的定義
(1)函數(shù)的定義格式
1 func 函數(shù)名(形參列表) -> 返回值類型 { 2 // 函數(shù)體... 3 4 }(2)形參列表的格式
形參名1: 形參類型1, 形參名2: 形參類型2, …?
(3)舉例:計算2個整數(shù)的和
1 func sum(num1: Int, num2: Int) -> Int { 2 return num1 + num2 3 }(4)沒有返回值的函數(shù)
如果函數(shù)沒有返回值,有3種寫法
1 func 函數(shù)名(形參列表) -> Void { 2 // 函數(shù)體... 3 } 4 5 func 函數(shù)名(形參列表) -> () { 6 // 函數(shù)體... 7 } 8 9 func 函數(shù)名(形參列表) { 10 // 函數(shù)體... 11 }(5)沒有形參的函數(shù)
一個函數(shù)如果沒有形參,函數(shù)名后面的小括號也不能省略
1 func 函數(shù)名() -> Int { 2 // 函數(shù)體... 3 }上面的函數(shù)沒有形參、返回值是Int類型
(6)返回元組的函數(shù)
一個函數(shù)也可以返回元組數(shù)據(jù)
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)")?
二、外部參數(shù)名
1.簡單說明
一般情況下,通過形式參數(shù)的名字,就能推斷出這個參數(shù)的含義和作用
1 func addStudent(name: String, age: Int, no: Int) { 2 println("添加學(xué)生:name=\(name),age=\(age),no=\(no)") 3 }在函數(shù)內(nèi)部一看參數(shù)名就知道這3個參數(shù)的作用
但是,形式參數(shù)是用在函數(shù)內(nèi)部的,當(dāng)調(diào)用函數(shù)時就看不見形參的名字,有可能導(dǎo)致以后會不太明白每個參數(shù)的含義
對于addStudent("jack", 20, 19)一眼望去,能猜出第1個參數(shù)"jack"是指姓名,后面的20、19分別代表什么含義?
為了解決上述問題,Swift提供了外部參數(shù)名語法
外部參數(shù)名可以在調(diào)用函數(shù)時提醒每個參數(shù)的含義
2.定義
外部參數(shù)名的定義格式如下:
1 func 函數(shù)名(外部參數(shù)名 形式參數(shù)名: 形式參數(shù)類型) -> 返回值類型 { 2 // 函數(shù)體... 3 }外部參數(shù)名寫在形式參數(shù)名的前面,與形式參數(shù)名之間用空格隔開
3.外部參數(shù)名的使用
1 func sum(number1 num1: Int, number2 num2: Int) -> Int 2 { 3 return num1 + num2 4 } 5 sum(number1: 10, number2: 20) // 調(diào)用函數(shù)注意:一旦定義了外部參數(shù)名,在調(diào)用函數(shù)時就必須加上外部參數(shù)名
4.外部參數(shù)名的簡寫
使用#能簡化外部參數(shù)名的定義
1 func sum(#num1 : Int, #num2 : Int) 2 { 3 return num1 + num2 4 }第1行代碼的意思:num1、num2既是形式參數(shù)名,又是外部參數(shù)名
// 調(diào)用函數(shù) ?sum(num1: 10, num2: 20)
?
三、默認(rèn)參數(shù)值
(1)可以在定義函數(shù)時,給形參指定一個默認(rèn)值,調(diào)用函數(shù)時,就可以不用給這個形參傳值
1 func addStudent(name: String, age: Int = 20) { 2 println("添加1個學(xué)生:name=\(name),age=\(age)") 3 }addStudent("jack")
age參數(shù)有個默認(rèn)值20,所以第4行調(diào)用函數(shù)時可以不傳值給age參數(shù)
輸出結(jié)果是:
添加1個學(xué)生:name=jack,age=20
?
(2)帶有默認(rèn)參數(shù)值的形參,Swift會自動給它生成一個跟形參名相同的外部參數(shù)名
age: Int = 20相當(dāng)于#age: Int = 20
因此,如果要傳入age參數(shù)值時,只能這么調(diào)用
addStudent("jack", age: 25)
?
(3)在帶有默認(rèn)參數(shù)值的參數(shù)名前加個下劃線 _ ,調(diào)用函數(shù)時就不用寫外部參數(shù)名
1 func addStudent(name: String, _ age: Int = 20) { 2 println("添加1個學(xué)生:name=\(name),age=\(age)") 3 } 4 5 addStudent("jack", 25)?
四、常量和變量參數(shù)
默認(rèn)情況下,函數(shù)的參數(shù)都是常量參數(shù),不能在函數(shù)內(nèi)部修改
1 func test(num: Int) { 2 num = 10 3 } 4 5 func test(num: Int)參數(shù)相當(dāng)于func test(let num: Int)注意:第2行代碼會報錯
在有些情況下,可能需要在函數(shù)內(nèi)部修改參數(shù)的值,這時需要定義變量參數(shù)
在參數(shù)名前面加個var即可
1 func test(var num : Int) { 2 num = 10 3 }// 編寫函數(shù)在某個字符串的尾部拼接N個其他字符串
1 func append(var string: String, suffix: String, count: Int) -> String 2 { 3 for _ in 0..<count { 4 string += suffix 5 } 6 return string 7 } 8 append("jack", ".", 4) // 調(diào)用函數(shù) 9 // jack....?
五、輸入輸出參數(shù)
1.什么是輸入輸出參數(shù)?
在C語言中,利用指針可以在函數(shù)內(nèi)部修改外部變量的值
在Swift中,利用輸入輸出參數(shù),也可以在函數(shù)內(nèi)部修改外部變量的值
輸入輸出參數(shù),顧名思義,能輸入一個值進來,也可以輸出一個值到外部
?
2.輸入輸出參數(shù)的定義
在參數(shù)名前面加個inout關(guān)鍵字即可
func swap(inout num1: Int, inout num2: Int) {
}
3.代碼示例:寫一個函數(shù)交換外部2個變量的值
1 func swap(inout num1: Int, inout num2: Int) { 2 let tempNum1 = num1 3 num1 = num2 4 num2 = tempNum1 5 } 6 var a = 20 7 var b = 10 8 swap(&a, &b) // 傳入的參數(shù)前面必須加上& 9 // 執(zhí)行完swap函數(shù)后,a的值是10,b的值是204.輸入輸出參數(shù)的使用注意
傳遞實參時,必須在實參的前面加上&
不能傳入常量或者字面量(比如10)作為參數(shù)值(因為它們都不可改)
輸入輸出參數(shù)不能有默認(rèn)值
輸入輸出參數(shù)不能是可變參數(shù)
輸入輸出參數(shù)不能再使用let、var修飾(inout和let、var不能共存)
?
輸入輸出參數(shù)的價值之一
可以實現(xiàn)函數(shù)的多返回值(其實讓函數(shù)返回元組類型,也能實現(xiàn)返回多個值)
轉(zhuǎn)載于:https://www.cnblogs.com/zengshuilin/p/5766680.html
總結(jié)
以上是生活随笔為你收集整理的iOS开发Swift篇—(七)函数(1)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: css。元素样式、边框样式
- 下一篇: 【动态规划】Vijos P1313 金明