Nel Swift "Tour" documentation, c'è un esercizio in cui si costruisce il seguente funzione di media una serie di numeri:Perché non posso dividere gli interi in rapido?
func sumOf(numbers: Int...) -> Int {
var sum = 0
for number in numbers {
sum += number
}
return sum
}
posso fare questo lavoro utilizzando qualcosa di simile al seguente:
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
}
La mia domanda è, perché devo lanciare tutto come un doppio per farlo funzionare? Se provo a lavorare con gli interi, in questo modo:
func averageOf(numbers: Int...) -> Double {
var sum = 0, countOfNumbers = 0
for number in numbers {
sum += number
countOfNumbers++
}
var result: Double = sum/countOfNumbers
return result
}
ottengo il seguente errore: Could not find an overload for '/' that accepts the supplied arguments
'var result: Double = Double (sum)/Double (countOfNumbers)', oppure è possibile sovraccaricare l'operatore, se lo si desidera. – holex
Quale risultato ti aspetti? Il cast medio troncato come doppio, o la media come se gli inte fossero doppi? (Vale a dire [4,3] restituire 3,5 (7,0/2) o 3 (7/2)?) –
Dovresti sapere che devi RTFM per qualcosa di banale come la divisione di interi. – Pescolly