第六章:函式(function)
6.2 區域性函式和變數捕獲
本節主要通過一些很基本的排序實現的demo去演示了一些關於區域性函式
(函式的巢狀)的使用方法。(我google了很多相關資料,發現都沒有本節的知識點。大家有個印象就行。)
區域性函式
注:本節Demo的關聯性和之前幾節較強,學習成本較高,這裡我使用swift playground中一個比較經典的Demo來講(感覺在實際專案中很少用到,只做大概瞭解。)
///函式的返回值是一個函式,這個函式的引數是Int 返回值是Int
func chooseStepFunction(backwards: Bool) -> (Int) -> Int {
func stepForward(input: Int) -> Int { return input + 1 }
func stepBackward(input: Int) -> Int { return input - 1 }
return backwards ? stepBackward : stepForward
}
var currentValue = -4
/// moveNearerToZero 是一個函式
let moveNearerToZero = chooseStepFunction(backwards: currentValue > 0)
while currentValue != 0 {
print("\(currentValue)... ")
currentValue = moveNearerToZero(currentValue)
}
複製程式碼
demo主要是將一個點從-4的位置移動到0點位置。
變數捕獲
我們可以在上面demo中巢狀的內層函式中
去操作外層函式中
定義的變數
。 這個就是變數捕獲
很多場景下可以使程式碼更加簡潔
。