函数采用可变数量的参数

时间:2014-06-04 11:09:28

标签: swift

在本文档中:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/GuidedTour.html#//apple_ref/doc/uid/TP40014097-CH2-XID_1

它提到在创建for循环时,我们可以使用0..30...3的简写分别替换i = 0; i < 3; ++ii = 0; i <= 3; ++i

非常好。

在“函数和闭包”部分的文档中,它表示函数可以通过数组传递可变数量的参数。

但是,在代码示例中,我们再次看到...

func sumOf(numbers: Int...) -> Int {
var sum = 0
for number in numbers {
sum += number
}
return sum
} 

这是一个错误吗?在我看来,更直观的语法是numbers: Int[]

下面的一些示例我们看到另一个代码示例,它具有以下内容:

func hasAnyMatches(list: Int[], condition: Int -> Bool) -> Bool {

2 个答案:

答案 0 :(得分:41)

如果所有参数都是Int数:Int []将是直观的。但如果你有这样的代码:

func foo(args:AnyObject...) {
    for arg: AnyObject in args {
        println(arg)
    }
}

foo(5, "bar", NSView())

输出:

5
bar
<NSView: 0x7fc5c1f0b450>

答案 1 :(得分:5)

sumOf中的参数类型称为&#39; variadic&#39;参数。 传递的参数只是作为一组元素接受,然后在该函数中使用之前转换为数组。

这个帖子就是一个很好的例子。

Passing lists from one function to another in Swift