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.
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%Tags und Links c swift switch-statement duffs-device fall-through