2549Fermer2551
BrunniLe 22/02/2017 à 14:43
J'ai passé 5 minutes et de gros poings sur mon bureau devant ça :

var array: Array<Double> = [1.0, 3.0, 4.0]
func sum(a: Array<Double>) {
	return a.reduce(0.0, +)
}
array.reduce(0.0, +)
sum(a: array)

Ce code donne une erreur "Argument passed to call that takes no arguments" sur la ligne "return a.reduce(0.0, +)", highlightant le 0.0.
Mais la même instruction, hors de la fonction sum passe. Arrachage de cheveux, on essaie ceci, même erreur :

var array: Array<Double> = [1.0, 3.0, 4.0]
func sum() {
	return array.reduce(0.0, +)
}
array.reduce(0.0, +)
sum()

Qu'y a-t-il de faux ?
Simple, j'ai oublié de définir un type de retour pour ma fonction sum. Résultat elle retourne rien, résultat par inférence, la version générique de reduce qui est utilisé s'attend à ne rien retourner et n'a donc pas d'argument. Voilà l'erreur.