【发布时间】:2014-08-02 13:58:46
【问题描述】:
在Swift "Tour" documentation 中,有一个练习,您可以在以下函数的基础上对一组数字进行平均:
func sumOf(numbers: Int...) -> Int {
var sum = 0
for number in numbers {
sum += number
}
return sum
}
我可以使用以下方法来完成这项工作:
func averageOf(numbers: Double...) -> Double {
var sum: Double = 0, countOfNumbers: Double = 0
for number in numbers {
sum += number
countOfNumbers++
}
var result: Double = sum / countOfNumbers
return result
}
我的问题是,为什么我必须将所有内容都转换为 Double 才能使其工作?如果我尝试使用整数,如下所示:
func averageOf(numbers: Int...) -> Double {
var sum = 0, countOfNumbers = 0
for number in numbers {
sum += number
countOfNumbers++
}
var result: Double = sum / countOfNumbers
return result
}
我收到以下错误:Could not find an overload for '/' that accepts the supplied arguments
【问题讨论】:
-
var result: Double = Double(sum) / Double(countOfNumbers),或者你可以重载操作符,如果你愿意的话。 -
您期待什么结果?整数截断平均转换为双精度数,还是将整数作为双精度数的平均值? (即 [4,3] 应该返回 3.5 (7.0/2) 还是 3 (7/2)?)
-
请注意,如果您将两个
Int类型相除,任何余数都将被丢弃(整数除法)developer.apple.com/documentation/swift/int/2884531
标签: swift