函数采用可变数量的参数

Ric*_*ton 19 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; ++i,并i = 0; i <= 3; ++i分别.

一切都很好.

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

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

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

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

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

func hasAnyMatches(list: Int[], condition: Int -> Bool) -> Bool {
Run Code Online (Sandbox Code Playgroud)

eXh*_*ted 42

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

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

foo(5, "bar", NSView())
Run Code Online (Sandbox Code Playgroud)

输出:

5
bar
<NSView: 0x7fc5c1f0b450>
Run Code Online (Sandbox Code Playgroud)


Gok*_*kul 5

sumOf中的参数类型称为"variadic"参数.传递的参数仅作为一组元素接受,然后在该函数中使用之前转换为数组.

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

在Swift中将列表从一个函数传递到另一个函数