Wie kann ich die Steuerung auf eine bestimmte Linie in Swift-Code übertragen?Ersatz für goto-Anweisung in Swift
In Objective-C würde ich so etwas wie die folgenden tun, mit goto
if(a==b)
{
goto i123;
}
else
{
goto i456;
}
NSLog(@"the not reachable point");
i123:
NSLog(@"line 123 is here");
int j = 5;
int x = 2+j;
i456:
NSLog(@"line 456 is here");
Die einzigen Steuertransfer Aussagen in Swift konnte ich finden waren continue
, break
, fallthrough
und return
continue
und break
arbeiten nur mit Schleifen; return
und fallthrough
übertragen Sie die Kontrolle nicht auf diese Weise.
Was kann ich verwenden?
EDIT: -
Julien __ 's Antwort nicht wirklich mein Problem lösen, aber es könnte die einzige verfügbare Option im Augenblick sein. also habe ich die Antwort von Julien__ akzeptiert
OMG. Natürlich gibt es Fälle, in denen ein Goto nett ist. Aber im Allgemeinen sieht dein Code wie FORTRAN aus den 50er Jahren aus. –
Dies kann leicht undefiniertes Verhalten verursachen, z.B. Wenn Sie nach dem Sprung zu 'i456:' den Wert von 'x' verwenden. Ein Ziel der Swift-Sprache war, dass der * Compiler * überprüfen kann, ob alle Variablen vor der Verwendung initialisiert wurden. –
Ich würde sagen "Funktionen verwenden". 'goto' war ursprünglich ein Workaround für ein Programm ohne Subroutinen. – Sulthan