问题答案
教程里面的一个例子:
 
func stepForward(input:Int) ->Int{
    return input + 1
}
func stepBackward(input:Int) ->Int{
    return input - 1
}
 
func chooseStepFunction(backwards:Bool) ->(Int) ->Int{
    return backwards ? stepBackward : stepForward
}
 
var currentValue = 3
let moveNearerToZero = chooseStepFunction(currentValue>0)
 
println("Counting to zero:")
while currentValue != 0{
    println("\(currentValue)")
    currentValue = moveNearerToZero(currentValue)
}
println("zero")
 
不理解的地方是: 带着 Bool值参数的 chooseStepFunction赋给了moveNearerToZero, 为什么后面 while 循环里面 moveNearToZero还能带着一个 int 值参数来传递? 因为我看见chooseStepFunction传入参数定义的是一个 Bool类型的参数.
标签: swift
答案

chooseStepFunction是个返回函数的函数(其类型准确说来是:接受一个Bool型参数,并返回一个函数,该函数接受一个Int型变量并返回一个Int值),如果参数backwards为真就返回stepBackward,否则就返回stepForward。因而实际上moveNearerToZero变量的值为函数stepBackward,所以可以直接调用。

举一反三