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.