Max*_*ers 17 variadic-functions swift
我不太明白为什么我不能将Int []从一个函数传递到另一个函数:
func sumOf(numbers: Int...) -> Int {
var sum = 0
for number in numbers {
sum += number
}
return sum
}
func average(numbers:Int...) -> Double {
var sum = sumOf(numbers)
return Double(sum) / Double(numbers.count)
}
Run Code Online (Sandbox Code Playgroud)
这给了我以下错误:
Playground execution failed: error: <REPL>:138:19: error: could not find an overload for '__conversion' that accepts the supplied arguments
var sum = sumOf(numbers)
^~~~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
Nat*_*ook 18
该numbers: Int...参数sumOf被称为可变参数的参数.这意味着您可以传入可变数量的该类型的参数,并且您传入的所有内容都将转换为该类型的数组,供您在函数中使用.
因此,numbers里面的参数average是一个数组,而不是一组sumOf期望的参数.
您可能希望重载sumOf以接受任何一个,如此,因此您的平均函数可以调用适当的版本:
func sumOf(numbers: [Int]) -> Int {
var sum = 0
for number in numbers {
sum += number
}
return sum
}
func sumOf(numbers: Int...) -> Int {
return sumOf(numbers)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4462 次 |
| 最近记录: |