// Playground - noun: a place where people can play
func getAverage(numbers: Int...) -> Double{
var total = 0
var average:Double = 0
for number in
The compiler picks an implementation of the / operator based on your input and output parameters. In your case the input parameters are two Int values and the output parameter is Double. This is what the compiler is looking for:
func / (left: Int, right: Int) -> Double
However, there is no such implementation of the / operator which is why you get the error. When you do Double(total/numbers.count), your output parameter changes to Int which is why the compiler picks the following implementation for the / operator which exists:
func / (left: Int, right: Int) -> Int
This is why you get 4instead of 4.5 as a result, even though you convert the result into a Double afterwards.
Your can provide your own implementation of the / operator which first converts your numbers into Doubles:
func / (left: Int, right: Int) -> Double {
return Double(left) / Double(right)
}
Then you can do the following:
let a: Int = 3
let b: Int = 2
let c: Double = a/b // -> 1.5