前面有提到,Swift每一個函數都有此特定的類型,因此,開發者也可以像宣告變數那樣,來宣告一個函數,同樣也可以對此進行傳值呼叫等。
// 宣告一個函數變數
var addFunc: (Int, Int) -> Int
// 對函數變數進行傳值
addFunc = {(param: Int, param2: Int) in return param + param2}
// 呼叫函數
addFunc(2, 4)
上面的程式碼對函數變數是採用了閉包的方式,閉包是一段有具體功能的程式碼,in是閉包的關鍵字,有關閉包的內容,後面會說。
var addFunc2: (Int, Int) -> Int
func myFunc13(param: Int, param2: Int) -> Int{
return param + param2
}
addFunc2 = myFunc13
addFunc2(1, 2)
函數也可以作為另一個函數的參數
// 參數param的類型為函數類型
func myFunc14(param: (Int, Int) -> Int) {
print(param(2, 4))
}
// 將addFunc函數作為參數傳到myFunc14
myFunc14(param: addFunc)
函數可以作為參數,也可以作為返回值來使用。
// 宣告一個函數變數
var addFunc3: (Int, Int) -> Int
func myFunc15() -> (Int, Int) -> Int {
return {(param1: Int, param2: Int) in
return param1 + param2
}
}
// 使用addFunc3來獲取返回值
addFunc3 = myFunc15()
// 進行呼叫
addFunc3(1,3)
在Swift支持函數嵌套,因此開發者也可以在函數內部再次建立函數。
func myFun16() -> (Int, Int) -> Int {
func subFun(param1: Int, param2: Int) -> Int {
return param1 + param2
}
return subFun
}
接下來,是閉包的介紹