2016-06-13 5 views
0

Ich bin relativ neu zu Swift und Playground. Wenn auf dem Spielplatz zu experimentieren, schrieb ich ein Stück Swift Code, um die Mittelwert von 5 ZahlenUnerwarteter Ausdruck nach Operator in 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) 

jedoch zu berechnen, es hält mir diesen Fehler „unerwarteten Ausdruck nach Operator“ geben (oben in Kommentaren im Code sehen). Kann mir bitte jemand erklären warum.

+0

Pah for-Schleifen ... umfassen funktionale Programmierung;) 'scores.reduce (0, kombinieren: +)/scores.count' – Hamish

Antwort

1

Die Fehlermeldung ist ein bisschen irreführend. Der eigentliche Fehlergrund ist das Leerzeichen zwischen count und ++.
Der Postfix-Operator muss dem Operanden direkt ohne Leerzeichen folgen.

Auf jeden Fall sollten Sie immer die Vorwärts-kompatible Syntax

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

Die ++ Verknüpfung wird 3. in Swift entfernt werden Sie müssen diese

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

anderes tun, können Sie kein Leerzeichen zwischen Anzahl haben und ++

so

count++ 
+0

@vadian tru dat. –

0

Sie können es so versuchen:

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

Und Sie teilen nur die total mit der count, die Sie als 0 deklariert haben. Sie benötigen die Anzahl der Array [Int]. Also müssen Sie scores.count tun, die Ihnen die Anzahl der Elemente in diesem Array gibt.