[swift 進階]讀書筆記-第六章:函式 C6P2 區域性函式和變數捕獲

liaoWorking在掘金發表於2019-01-12

第六章:函式(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中巢狀的內層函式中去操作外層函式中定義的變數。 這個就是變數捕獲

很多場景下可以使程式碼更加簡潔

文章原始檔地址

相關文章