在OC语言的基础之上,swift中对函数的功能进行了扩充。如下对函数的基本功能进行列举:
//可变参数--类似于参数中传入一个数组,参数的处理按照数据的方式来进行
//可变参数的传入值在函数体中变为此类型的一个数组。例如,一个叫做numbers的Double...型可变参数,在函数体内可以当做一个叫numbers的[Double]型的数组常量。
函数参数默认是常量。试图在函数体中更改参数值将会导致编译错误(compile-time error)。这意味着你不能错误地更改参数值。如果你想要一个函数可以修改参数的值,并且想要在这些修改在函数调用结束后仍然存在,那么就应该把这个参数定义为输入输出参数(In-Out Parameters)。
这个例子定义了printMathResult(_:_:_:)函数,它有三个参数:第一个参数叫mathFunction,类型是(Int, Int) -> Int,你可以传入任何这种类型的函数;第二个和第三个参数叫a和b,它们的类型都是Int,这两个值作为已给出的函数的输入值。
当printMathResult(_:_:_:)被调用时,它被传入addTwoInts函数和整数3和5。它用传入3和5调用addTwoInts,并输出结果:8。
printMathResult(_:_:_:)函数的作用就是输出另一个适当类型的数学函数的调用结果。它不关心传入函数是如何实现的,只关心传入的函数是不是一个正确的类型。这使得printMathResult(_:_:_:)能以一种类型安全(type-safe)的方式将一部分功能转给调用者实现。