为什么下面的代码无法编译(为了一个错误得到这个:传入一个Int ...时,找不到接受所提供参数的'_conversion'的重载)?
func sumOfNumbers(numbers: Int...) -> Int{
var sum = 0;
for number in numbers{
sum += number
}
return sum
}
func averageOfInts(numbers: Int...) -> Int{
var sumNums: Int = 0
sumNums = sumOfNumbers(numbers)
var count = numbers.count
return sumOfNumbers(numbers)/numbers.count
}
但是当使用Int []代替Int ...时,它会按预期编译和工作 .
2 回答
当参数的类型是
Int...
时,所有后续的args都会为你聚集到数组中,而Int[]
要求你传递 just one 参数,这是一个Ints数组:用法
Int...
语法称为Variadic parameter in the swift documentation(旁白:我从coffeescript借用了名称“splat”,我第一次遇到这种语法)
Int...
表示Int
类型的一个或多个参数 .像总和(3,4,5,6)
而
Int[]
表示包含Ints的单个参数 . (像一个数组)像总和([3,4,5,6])