快速编程 - 功能和关闭

时间:2015-01-29 11:45:01

标签: swift

我的问题是函数和闭包中的以下示例,为什么我们需要使用这一行

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)

这些点是什么意思?

6 个答案:

答案 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

,不需要调用者将数字包装在数组中。

请参阅https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Functions.html#//apple_ref/doc/uid/TP40014097-CH10-ID171

答案 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中,函数可以有一个最大的可变参数

相关问题