2016-03-25 6 views
-4

++ und - wurde in swift ab der neuesten Version veraltet und wird in Swift 3 entfernt.Swift ++ & - veraltet. Alternativen für eine Schleife

Ich habe diesen Code, der gerade funktioniert, den ich aktualisieren möchte, aber ich bin nicht sicher, wie man es umschreibt. Jede Hilfe wäre willkommen.

Ich weiß, es gibt einen anderen Weg Swift macht gerne Loops, aber ich bin unerfahren. Als ich all diesen Code schrieb, benutzte ich nur die C++ - Methode, an die ich mich gewöhnt hatte. Wenn ich nach einem Beispiel suche, verstehe ich, dass ich mich über meinen Code bewerben kann.

+0

Will, der den Wert i erhöht, und dann den erhöhten Wert zurückgeben? – Charlie

+0

'metarArray [2 ... BemerkungIndex] .Filter {enthältWind ($ 0)} .forEach {metarDict.updateValue ($ 0, forKey:" Wind "}' – Sulthan

Antwort

2

So:

for i in 2...remarkIndex 

Dies ist, was Sie sowieso immer getan haben sollte.

Da jedoch das einzige, was Sie mit i tun wollen Index in metarArray ist, wäre es besser, auch mit dem Fahrrad durch metarArrayselbst:

for item in metarArray[2...remarkIndex] 

kein Index erforderlich!

+0

Danke für die kurze Antwort, die auf den Punkt kommt. Ich lerne ! Huzzah. – Charlie

+0

Aber noch besser, da Sie nur mit 'metarArray [i]' arbeiten möchten, wäre es gewesen, durch 'metarArray' _itself_ zu gehen. Das schrittweise Einreihen in ein Array ist völlig unnötig. – matt

+0

Das Entfernen der äußeren Schleife macht a Nun, ich denke, dass Sie es erwähnen, ich schätze diesen Kommentar. – Charlie

3

Nur der Vollständigkeit halber wollen wir zeigen einen funktionalen Ansatz für den inneren Block auch:

metarArray[2...remarkIndex] 
    .filter(containsWind) 
    .forEach { metarDict.updateValue($0, forKey: "winds") } 
+0

Oh mein das ist elegant und sieht viel weniger buggy. Muss sich hinsetzen und diese Syntaxoptionen lernen. Vielen Dank für Ihre Nachricht. – Charlie

+0

Dies ist sicherlich der schnellste Weg, aber beachten Sie, dass es zusätzliche Kosten mit sich bringt, da wir durch das Stück _twice_ radeln müssen. In Ihrem tatsächlichen Code dürfte dieser Aufwand jedoch vernachlässigbar sein. – matt

+0

@matt Ich stimme völlig zu, dass der funktionale Ansatz nicht immer der beste Ansatz ist. – Sulthan