首页 > Swift 函数作为返回值例子疑惑

Swift 函数作为返回值例子疑惑

教程里面的一个例子:

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类型的参数.


currentValue 传入 moveNearerToZero = chooseStepFunction(currentValue>0) 判断 currentValue > 0 返回true。你可能看漏了 >


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

【热门文章】
【热门文章】