在本文档中: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..3和0...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)
sumOf中的参数类型称为"variadic"参数.传递的参数仅作为一组元素接受,然后在该函数中使用之前转换为数组.
这个帖子就是一个很好的例子.