Come posso trasferire il controllo a una linea specifica nel codice Swift?Sostituzione per istruzione goto in Swift
In Objective-C vorrei fare qualcosa di simile a quanto segue, utilizzando 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");
Le uniche dichiarazioni trasferire il controllo a Swift sono riuscito a trovare erano continue
, break
, fallthrough
, e return
continue
e break
funzionano solo con loop; return
e fallthrough
non trasferiscono il controllo in questo modo.
Cosa posso usare?
EDIT: -
risposta Julien __ 's non ha effettivamente risolvere il mio problema, ma potrebbe essere l'unica opzione disponibile al momento. quindi ho accettato la risposta di Julien__
OMG. Certamente ci sono casi in cui un goto è bello. Ma generalmente il tuo codice sembra FORTRAN degli anni '50. –
Ciò può facilmente causare un comportamento indefinito, ad es. se usi il valore di 'x' dopo aver saltato su' i456: '. Un obiettivo del linguaggio Swift era che il * compilatore * può verificare se tutte le variabili sono inizializzate prima di essere utilizzate. –
Direi "usare le funzioni". 'goto' era in origine una soluzione alternativa per un programma senza subroutine. – Sulthan