fall-through

___ tag123c ___ C ist eine universelle Computerprogrammiersprache, die für Betriebssysteme, Bibliotheken, Spiele und andere Hochleistungsanwendungen verwendet wird. Dieses Tag sollte bei allgemeinen Fragen zur C-Sprache verwendet werden, wie in der Norm ISO 9899: 2011 definiert. Fügen Sie ggf. ein versionsspezifisches Tag wie c99 oder c90 für Fragen zu älteren Sprachstandards hinzu. C unterscheidet sich von C ++ und es sollte nicht mit dem C ++ - Tag kombiniert werden, wenn ein rationaler Grund fehlt. ___ qstnhdr ___ Duffs Gerät in Swift ___ tag123switchstatement ___ In der Computerprogrammierung ist eine switch-, case-, select- oder inspect-Anweisung eine Art von Auswahlkontrollmechanismus ___ answer47848918 ___

Sie drücken Ihre Absicht mit dem höchstmöglichen Code aus und vertrauen dem Swift-Compiler, um ihn für Sie zu optimieren, anstatt ihn selbst zu optimieren. Swift ist eine Hochsprache. Sie führen keine Low-Level-Schleife in einer High-Level-Sprache aus.

Und besonders in Swift müssen Sie sich keine Gedanken über das Kopieren von Arrays machen (die ursprüngliche Anwendung von Duffs Device), da Swift vorgibt, ein Array zu kopieren, wenn Sie es zuweisen, indem Sie "Kopieren beim Schreiben" verwenden. Dies bedeutet, dass das gleiche Array für zwei Variablen verwendet wird, solange Sie gerade von ihnen lesen, aber sobald Sie eine davon ändern, wird im Hintergrund ein Duplikat erstellt.

Zum Beispiel aus Ссылка     Ändern von Kopien von Arrays

%Vor%     
___ tag123duffsdevice ___ hilf uns dieses Wiki zu bearbeiten ___ tag123swift ___ Swift ist eine universelle Open-Source-Programmiersprache, die von Apple Inc. für ihre Plattformen und Linux entwickelt wurde. Verwenden Sie das Tag nur für Fragen zu Sprachfunktionen oder für Code in Swift. Verwenden Sie die Tags [ios], [osx], [watch-os], [tvos], [cocoa-touch] und [cocoa] für (sprachunabhängige) Fragen zu den Plattformen oder Frameworks. ___ tag123durchstarten ___ hilf uns dieses Wiki zu bearbeiten ___ qstntxt ___

Wir wissen, dass ein Duff-Gerät das Interlacing der Strukturen eines Fallthrough-Switches und einer Schleife wie folgt verwendet:

%Vor%

Nun, in Swif 2.1, Switch-Case-Kontrollflüsse haben implizit keinen Fall durch, wie wir in Swift-Dokumenten lesen:

  

Kein impliziter Fall durch

     

Im Gegensatz zu den Schalteranweisungen in C und Objective-C wechseln Sie   Aussagen in Swift fallen nicht durch den Boden jedes Falles und   in die nächste standardmäßig. Stattdessen die gesamte switch-Anweisung   beendet seine Ausführung, sobald der erste passende Schalterfall vorliegt   abgeschlossen, ohne dass eine explizite break-Anweisung erforderlich ist. Das macht   Die Switch-Anweisung ist sicherer und einfacher zu benutzen als in C und vermeidet   mehr als einen Schalterfall versehentlich ausführen.

Nun, da es eine Fallthrough-Klausel gibt, die in Swift explizit einen Fallthrough-Nebeneffekt hat:

  

Fall durch

     

Switch-Anweisungen in Swift fallen nicht durch den Boden jedes Falles   und in den nächsten. Stattdessen wird die gesamte switch-Anweisung abgeschlossen   seine Ausführung, sobald der erste übereinstimmende Fall abgeschlossen ist. Durch   Im Gegensatz dazu müssen Sie in C eine explizite break-Anweisung einfügen   Ende jedes Schalters, um einen Fall zu vermeiden. Fehler vermeiden   Fallout bedeutet, dass Swift-Switch-Statements viel prägnanter sind   und vorhersagbarer als ihre Gegenstücke in C, und so vermeiden sie   Ausführung mehrerer Schalter fälschlicherweise.

das ist ungefähr so:

%Vor%

wenn man bedenkt, dass, wie Wikipedia uns erinnert, die Geräte aus dem Problem herauskommen

%Vor%

Was wäre die genaue Implementierung eines Duff-Geräts in Swift ?

Dies ist nur eine Sprache & amp; Coding Frage, es ist nicht beabsichtigt, in echten Swift-Anwendungen angewendet werden.

    
___
1
Antwort

Duffs Gerät in Swift

Wir wissen, dass ein Duff-Gerät das Interlacing der Strukturen eines Fallthrough-Switches und einer Schleife wie folgt verwendet: %Vor% Nun, in Swif 2.1, Switch-Case-Kontrollflüsse haben implizit keinen Fall durch, wie wir in Swift-Dokum...
25.01.2016, 15:34