閉包簡單來說就是一個沒有名字的 Function ,與 Function 同樣是一個獨立的程式區塊,但不同的地方在於,必包可以被當作是參數在程式間傳遞,而 Function 不行
閉包的格式
{(參數) -> 返回執型別 in
// code
}
這裡寫一個簡單的例子
// 加法
let add = {(_ a: Int, _ b: Int) -> Int in
return a + b
}
// 減法
let subtract = {(_ a: Int, _ b: Int) -> Int in
return a - b
}
// 乘法
let multiple = {(_ a: Int, _ b: Int) -> Int in
return a * b
}
// 除法
let division = {(_ a: Int, _ b: Int) -> Int in
return a / b
}
// 將參數 calculate 設為一個兩個輸入及一個輸出的閉包
func printResult(_ calculate: (Int, Int) -> Int, _ a: Int, _ b: Int) {
print(calculate(a,b))
}
printResult(add, 10, 10) // print 20
printResult(substract, 100, 20) // print 80
printResult(multiple, 32, 32) // print 1024
printResult(division, 72, 9) // print 8
雖然在這裡看起來有點多此一舉,但如果今天要做的不是只有計算這麼簡單的事情,閉包就會變得很好用