Ich habe Xcode (7.3) aktualisiert und es gibt viele Änderungen; C-like für Ausdrücke wird veraltet sein. Für ein einfaches Beispiel,
%Vor%Wie schreibe ich diese klare und einfache C-like for-Schleife, um mit den neuen Änderungen konform zu sein?
%Vor%Aktualisierung. Eine weitere Variante
%Vor%Und mehr ...
%Vor% Update2 Nach mehreren Vorschlägen für mich ist die while-Schleife vorzuziehen universelle Substitution für alle Fälle komplizierter als das einfache Beispiel der C-like for-Schleife (geeignet für in-Ausdruck). Sie müssen nicht jedes Mal nach einem neuen Ansatz suchen.
Zum Beispiel: Statt
Ich kann
verwenden %Vor%Im schlimmsten Fall können Sie es in eine while-Schleife konvertieren.
%Vor%- BEARBEITEN -
Weil Sie sagten, "while loop ist die bevorzugte universelle Substitution für alle Fälle, die komplizierter sind als das einfache Beispiel einer C-ähnlichen for-Schleife" ... Ich möchte meine Antwort erweitern. Ich möchte nicht für einen Haufen schlechten Code verantwortlich sein ...
In den meisten Fällen gibt es eine einfache For-in-Schleife, die mit der Situation umgehen kann:
%Vor%Für Ihren letzten Fall könnten Sie berechtigt sein, ein for-Look zu verwenden, aber das ist ein extrem seltener Kantenfall.
Verwerfen Sie Ihren Code nicht mit for-Schleifen.
charls (alte) Antwort wird abstürzen. Sie möchten 0..<array.count
:
Wenn Sie etwas wie Ihre i
/ j
Schleife wollen, können Sie stride
verwenden und i
's Nachfolger bekommen:
Stellen Sie sicher, dass i.successor()
überprüft wird, falls Sie außerhalb der Grenzen bleiben.
%Vor%
Hier brauchen Sie den Elementindex überhaupt nicht, Sie können also einfach Aufzählung der Array-Elemente:
%Vor%%Vor%
Um über Paare benachbarter Elemente zu iterieren, verwenden Sie zip()
und dropFirst()
:
Ausgabe:
%Vor% Für andere Entfernungen verwenden Sie dropFirst(n)
:
Ausgabe:
%Vor%Es gibt wahrscheinlich viele Lösungen zu tun
%Vor%
ohne eine C-style for-Schleife, hier ist eine:
%Vor%Wenn Sie etwas mit nachfolgenden Paaren machen wollen, gibt es viele andere Möglichkeiten, dies zu tun.
So etwas würde funktionieren ...
%Vor% Was Sie wirklich tun, ist hier das Aufzählen von zwei parallelen Sequenzen. Erstellen Sie also diese Sequenzen und verwenden Sie zip
, um sie in eine einzelne Sequenz umzuwandeln.
Führen Sie die Aufzählung durch
%Vor%oder um Nachbarn zu vergleichen
%Vor%oder zippen und aufzählen
%Vor%Ergebnis
%Vor%um benachbarte Elemente aus demselben Array zu vergleichen, können Sie
verwenden %Vor%druckt
%Vor%mehr 'generischer' Ansatz ohne Verwendung von tiefgestellten aber separaten Generatoren
%Vor%