Swift教程之函数详解

2020-01-08 22:46:49于丽

可以使用一个函数类型作为另一个函数的返回类型。返回的函数(->)即你的返回箭头后,立即写一个完整的函数类型就做到这一点。
下面的例子定义了两个简单的函数,分别是stepForward和stepBackward。stepForward函数返回输入值自增1,而stepBackward函数返回输入值自减1。这两个函数都有一个相同的类型 (Int) -> Int:

 

复制代码  
func stepForward(input: Int) -> Int {
    return input + 1
}
func stepBackward(input: Int) -> Int {
    return input - 1
}
这里有一个chooseStepFunction函数,它的返回类型是”函数类型(Int) -> Int”。chooseStepFunction返回一个基于布尔参数的stepBackward或stepForward函数类型:

 

 

复制代码  
func chooseStepFunction(backwards: Bool) -> (Int) -> Int {
    return backwards ? stepBackward : stepForward
}
您现在可以使用chooseStepFunction选择一个函数,可能是加一函数或另一个:

 

 

复制代码
var currentValue = 3
let moveNearerToZero = chooseStepFunction(currentValue > 0)
// moveNearerToZero now refers to the stepBackward() function
上述例子可以判断步骤的正负决定是否需要移动使得currentValue变量逐步接近零。currentValue初始值是3,这意味着当前值>0,则返回true,chooseStepFunction返回stepBackward函数。返回函数的引用存储在一个称为moveNearerToZero常量里。
如今moveNearerToZero执行了正确的功能,就可以用来计数到零:

 

 

复制代码  
println("Counting to zero:")
// Counting to zero:
while currentValue != 0 {
println("(currentValue)... ")
currentValue = moveNearerToZero(currentValue)
}
println("zero!")
// 3...
// 2...
// 1...
// zero!
5、嵌套函数

 

迄今为止所有你在本章中遇到函数都是全局函数,在全局范围内定义。其实你还可以在其他函数中定义函数,被称为嵌套函数。

嵌套函数默认对外界是隐藏的,但仍然可以调用和使用其内部的函数。内部函数也可以返回一个嵌套函数,允许在嵌套函数内的另一个范围内使用。