嵌套函数
你也可以把函数定义在别的函数体中,称作 嵌套函数(nested functions)。
默认情况下,嵌套函数是对外界不可见的,但是可以被它们的外围函数(enclosing function)调用。一个外围函数也可以返回它的某一个嵌套函数,使得这个函数可以在其他域中被使用。
func chooseStepFunction(backward:Bool) -> (Int) -> Int {
func stepForward(input:Int) -> Int {return input + 1}
func stepBackward(input:Int) -> Int {return input - 1}
return backward ? stepBackward : stepForward
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
var cur = 4
let mover = chooseStepFunction(backward: cur == 4)
while cur != 0 {
cur = mover(cur)
}
}