首页 » iOS编程基础:Swift、Xcode和Cocoa入门指南 » iOS编程基础:Swift、Xcode和Cocoa入门指南全文在线阅读

《iOS编程基础:Swift、Xcode和Cocoa入门指南》2.5 可变参数

关灯直达底部

参数可以是可变参数。这意味着调用者可以根据需要提供多个该参数类型的值,中间用逗号分隔;函数体会将这些值当作数组。

要想将参数标记为可变参数,参数后要跟着3个点,如下所示:


func sayStrings(arrayOfStrings:String ...) {    for s in arrayOfStrings { print(s) }}  

下面是调用方式:


sayStrings("hey", "ho", "nonny nonny no")  

在Swift的早期版本中,可变参数只能是最后一个参数;不过,Swift 2.0放宽了这个限制。现在的限制是一个函数最多只能声明一个可变参数(否则就无法确定值列表结束的位置)。比如:


func sayStrings(arrayOfStrings:String ..., times:Int) {    for _ in 1...times {        for s in arrayOfStrings { print(s) }    }}  

下面是调用方式:


sayStrings("Mannie", "Moe", "Jack", times:3)  

全局print函数的第1个参数就是个可变参数,因此可以通过一条命令输出多个值:


print("Mannie", 3, true) // Mannie 3 true  

默认参数对输出还做了进一步的细化。默认的separator:是个空格(当提供了多个值),默认的terminator:是个换行符;你可以修改它们:


print("Mannie", "Moe", separator:", ", terminator: ", ")print("Jack")// output is "Mannie, Moe, Jack" on one line  

遗憾的是,Swift语言中有一个陷阱:没办法将数组转换为逗号分隔的参数列表(相比于Ruby中的splat)。如果一开始就有一个某种类型的数组,那么你不能在需要该类型可变参数的地方使用它。