2016-06-13 2 views
0

Je suis relativement nouveau à Swift et Playground. Lors de l'expérimentation dans la cour, je l'ai écrit un morceau de code Swift pour calculer les moyennes de 5 numérosExpression inattendue après opérateur dans swift

func avg (scores: [Int]) -> (Int){ 
    var avg = 0 
    var total = 0 
    var count = 0 

    for score in scores { 
     total += score 
     count ++ 
    } // Error: unexpected expression after operator 

    avg = total/count 

    return avg 
} 

let score = avg([10, 10, 10, 10, 10]) 
print(score) 

Cependant, il continue à me donner cette erreur « expression inattendue après l'opérateur » (voir ci-dessus dans les commentaires dans le code). Quelqu'un peut-il expliquer pourquoi?

+0

Pah pour les boucles ... embrasser la programmation fonctionnelle;) 'scores.reduce (0, combiner: +)/scores.count' – Hamish

Répondre

1

Le message d'erreur est un peu trompeur.

La raison réelle de l'erreur est le caractère d'espacement entre count et ++.
L'opérateur de suffixe doit suivre directement l'opérande sans aucun espace.

Quoi qu'il en soit, vous devriez toujours utiliser la syntaxe compatible avant

count += 1 
0
for score in scores { 
    total += score 
    count ++ 
} // Error: unexpected expression after operator 

Le raccourci ++ sera supprimé dans Swift 3. Vous devez faire

for score in scores { 
    total += score 
    count = count + 1 
} 

autre que vous ne pouvez pas avoir un espace entre le nombre et ++

si

count++ 
+0

@vadian tru dat. –

0

Vous pouvez l'essayer comme ceci:

func average(scores: [Int]) -> Int { 
    var avg = 0 
    for number in numbers { 
     avg += score 
    } 
    var ave = (avg)/(scores.count) 
    return ave 
} 

Et vous divisez juste le total avec le count que vous avez déclaré comme 0. Vous avez besoin du nombre de la matrice [Int]. Donc, vous devez faire scores.count qui vous donne le nombre d'éléments dans ce tableau.