我的问题是函数和闭包中的以下示例,为什么我们需要使用这一行
func sumOf(numbers: Int...)
有三个点(...)?
func sumOf(numbers: Int...) -> Int {
var sum = 0
for number in numbers {
sum += number
}
return sum
}
sumOf()
sumOf(42, 597, 12)
这些点是什么意思?
答案 0 :(得分:1)
我不了解Swift,但在ActionScript等其他语言中,这些点表示您可以将多个参数传递给该方法,它们将被解释为数组。
例如:
sumOf(1, 3, 6);
答案 1 :(得分:1)
那些...
意味着该函数可以采用可变数量的参数
来自The Swift Programming Language一书:
变量参数
可变参数接受零个或多个指定类型的值。 您使用可变参数来指定参数可以 调用函数时传递了不同数量的输入值。 通过插入三个句点字符来写出可变参数(...) 在参数的类型名称之后。
传递给可变参数的值在其中可用 函数的主体作为适当类型的数组。例如, 一个variadic参数,其名称为数字,类型为Double ...是 在函数体内可用作为常量数组调用 数字[双]。
答案 2 :(得分:1)
这意味着您可以传入任意数量的整数而不是明确指定的数字
如果你说
func sumOf(num1: Int, num2: Int) -> Int
你只能将2个Int加起来,你需要为3和4等编写一个新函数。
本质上它是写作的简写
func sumOf(numbers :[Int]) -> Int
,不需要调用者将数字包装在数组中。
答案 3 :(得分:1)
这称为可变参数参数,可接受零个或多个Int
值。有关详细信息,请参阅https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Functions.html
答案 4 :(得分:1)
此处...
表示该函数可以使用Int
类型的多个参数。
您可以考虑这一点,因为您将数组作为参数传递,除非您不使用Square Notation([]
)。
答案 5 :(得分:1)
这意味着该函数可以使用可变数量的参数,将它们收集到一个数组中。
并且该参数(在您的情况下为numbers
)称为可变参数。
注意,在swift 2中,函数可以有一个最大的可变参数