dart
Flusso di controllo
Ricerca…
Se altro
Dart ha If Else:
if (year >= 2001) {
print('21st century');
} else if (year >= 1901) {
print('20th century');
} else {
print('We Must Go Back!');
}
Dart ha anche un operatore ternario if :
var foo = true;
print(foo ? 'Foo' : 'Bar'); // Displays "Foo".
Mentre Loop
Mentre i loop e i loop while sono consentiti in Dart:
while(peopleAreClapping()) {
playSongs();
}
e:
do {
processRequest();
} while(stillRunning());
I loop possono essere interrotti utilizzando una pausa:
while (true) {
if (shutDownRequested()) break;
processIncomingRequests();
}
Puoi saltare le iterazioni in un ciclo usando continua:
for (var i = 0; i < bigNumber; i++) {
if (i.isEven){
continue;
}
doSomething();
}
Per Loop
Sono ammessi due tipi di loop for:
for (int month = 1; month <= 12; month++) {
print(month);
}
e:
for (var object in flybyObjects) {
print(object);
}
Il ciclo for-in è comodo quando si Iterable semplicemente su una collezione Iterable . Esiste anche un metodo forEach che puoi chiamare su oggetti Iterable che si comportano come for-in :
flybyObjects.forEach((object) => print(object));
o, più concisamente:
flybyObjects.forEach(print);
Scatola dell'interruttore
Dart ha un interruttore che può essere usato al posto di lunghe istruzioni if-else:
var command = 'OPEN';
switch (command) {
case 'CLOSED':
executeClosed();
break;
case 'OPEN':
executeOpen();
break;
case 'APPROVED':
executeApproved();
break;
case 'UNSURE':
// missing break statement means this case will fall through
// to the next statement, in this case the default case
default:
executeUnknown();
}
È possibile confrontare solo le costanti di intero, stringa o compilazione. Gli oggetti confrontati devono essere istanze della stessa classe (e non di nessuno dei suoi sottotipi) e la classe non deve sovrascrivere ==.
Un aspetto sorprendente dello switch in Dart è che le clausole case non vuote devono terminare con break, o meno comunemente, continuare, lanciare o restituire. Cioè, le clausole non vuote non possono fallire. È necessario terminare esplicitamente una clausola non vuota, solitamente con una pausa. Si otterrà un avviso statico se si omette l'interruzione, la continuazione, il lancio o il ritorno e il codice eseguirà un errore in quella posizione in fase di esecuzione.
var command = 'OPEN';
switch (command) {
case 'OPEN':
executeOpen();
// ERROR: Missing break causes an exception to be thrown!!
case 'CLOSED': // Empty case falls through
case 'LOCKED':
executeClosed();
break;
}
Se vuoi ricorrere in un case non vuoto, puoi usare continue e un'etichetta:
var command = 'OPEN';
switch (command) {
case 'OPEN':
executeOpen();
continue locked;
locked: case 'LOCKED':
executeClosed();
break;
}