Swift中的可变参数函数介绍
可变参数函数指的是可以接受任意多个参数的函数,我们最熟悉的可能就是NSString的-stringWithFormat:方法了。在Objective-C中,我们使用这个方法生成字符串的写法是这样的:
NSString*name=@"Tom"; NSDate*date=[NSDatedate]; NSString*string=[NSStringstringWithFormat: @"Hello%@.Date:%@",name,date];
这个方法中的参数是可以任意变化的,参数的第一项是需要格式化的字符串,后面的参数都是向第一个参数中填空。在这里我们不再详细描述Objective-C中可变参数函数的写法(毕竟这是一本Swift的书),但是我相信绝大多数即使有着几年Objective-C经验的读者,也很难在不查阅资料的前提下正确写出一个接受可变参数的函数。
但是这一切在Swift中得到了前所未有的简化。现在,写一个可变参数的函数只需要在声明参数时在类型后面加上...就可以了。比如下面就声明了一个接受可变参数的Int累加函数:
funcsum(input:Int...)->Int{ //... }
输入的input在函数体内部将被作为数组[Int]来使用,让我们来完成上面的方法吧。当然你可以用传统的for...in做累加,但是这里我们选择了一种看起来更Swift的方式:
funcsum(input:Int...)->Int{ returninput.reduce(0,combine:+) }
println(sum(1,2,3,4,5)) //输出:15