函數(shù)是一段代碼片段
函數(shù)定義和調用
語法
func 函數(shù)名(參數(shù)表) -> 返回值類型{
函數(shù)體
}
- 函數(shù)參數(shù)是
let
類型 - 函數(shù)默認返回空元組
()
- 參數(shù)和返回值都可以為空
- 返回多個值時插佛,使用元組
參數(shù)標簽和參數(shù)名
默認情況下參數(shù)標簽同參數(shù)名
func abc(a:Int,b:Int,c:Int){
}
以上參數(shù)標簽為a,b,c
,函數(shù)調用為abc(a:1,b:2,c:3)
指定參數(shù)標簽
func abc(x a:Int,y b:Int,z c:Int){
}
函數(shù)調用為abc(x:1,y:2,z:3)
標簽名可以重復量窘,不推薦
忽略標簽名
使用_
作為參數(shù)標簽
func abc(_ a:Int,_ b:Int,_ c:Int){
}
函數(shù)調用為abc(1,2,3)
默認參數(shù)值
func abc(a:Int,b:Int,c:Int = 10){
}
使用默認值參數(shù)雇寇,實際上函數(shù)會被重載為兩個函數(shù),函數(shù)調用為
abc(a:1,b:2)
,abc(a:1,b:2,c:3)
默認值參數(shù)的位置沒有要求
可變長參數(shù)
在參數(shù)類型后加...
func abc(a:Int,b:Int...,c:Int = 10){
}
實際上b是個[Int]
型蚌铜,當成數(shù)組用就行锨侯。可變長參數(shù)和默認值參數(shù)的順序是任意的冬殃,而且可變長參數(shù)有一個隱含的默認值[]
實例
func abc(a:Int = 1,b:Int...,c:Int = 1) {
print(b)
}
abc(a: 1, b:1,2,3, c: 2)
abc()
abc(a:1)
abc(b:1,2,3)
abc(c:2)
可變長參數(shù)最多一個
輸入輸出參數(shù)
func abc(a:inout Int,b:Int...,c:Int = 10){
}
輸入輸出參數(shù)必須是變量囚痴,字面值和常量是不行的,函數(shù)調用前用&
函數(shù)類型
函數(shù)的類型由 參數(shù)類型和返回值類型決定
func abc(a:Int,b:Int) -> Void {
}
函數(shù)類型為(Int,Int) -> Void
可以將函數(shù)賦值給常量或者變量审葬,使用函數(shù)
另外函數(shù)也可以作為另一個函數(shù)的參數(shù)和返回值
函數(shù)可以賦值給一個變量
func abc(a:Int,b:Int,c:Int) {
}
abc(a: 1, b: 2, c: 3)
var funAbc = abc
funAbc(1,2,3)
賦值給變量后的函數(shù)調用深滚,不需要加函數(shù)標簽名
嵌套函數(shù)
全局作用域的叫全局函數(shù),定義在函數(shù)中的函數(shù)叫做 嵌套函數(shù)
嵌套函數(shù)默認不可見涣觉,但是可以作為返回值痴荐,返回到全局作用域中,嵌套函數(shù)可以捕獲上下文中的變量和常量
Swift的函數(shù)重載
函數(shù)名相同官册,參數(shù)表不同的函數(shù)生兆。返回值不作為重載的標準。
參數(shù)表:參數(shù)個數(shù)膝宁,參數(shù)類型鸦难,參數(shù)順序根吁,參數(shù)標簽名