dart
Kontrola przepływu
Szukaj…
Jeśli inaczej
Dart ma If Else:
if (year >= 2001) {
print('21st century');
} else if (year >= 1901) {
print('20th century');
} else {
print('We Must Go Back!');
}
Dart ma również trójkę, if operator:
var foo = true;
print(foo ? 'Foo' : 'Bar'); // Displays "Foo".
Podczas gdy pętla
Pętle While i do while są dozwolone w Dart:
while(peopleAreClapping()) {
playSongs();
}
i:
do {
processRequest();
} while(stillRunning());
Pętle można zakończyć za pomocą przerwy:
while (true) {
if (shutDownRequested()) break;
processIncomingRequests();
}
Możesz pominąć iteracje w pętli, używając opcji Kontynuuj:
for (var i = 0; i < bigNumber; i++) {
if (i.isEven){
continue;
}
doSomething();
}
Dla pętli
Dopuszczalne są dwa typy pętli for:
for (int month = 1; month <= 12; month++) {
print(month);
}
i:
for (var object in flybyObjects) {
print(object);
}
Pętla for-in jest wygodna, gdy po prostu iteruje kolekcję Iterable . Istnieje również forEach sposób, że można zadzwonić na Iterable obiektów, które zachowuje się jak for-in :
flybyObjects.forEach((object) => print(object));
lub bardziej zwięźle:
flybyObjects.forEach(print);
Sprawa przełącznik
Dart ma obudowę przełącznika, której można użyć zamiast długich instrukcji 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();
}
Można porównywać tylko stałe całkowite, łańcuchowe lub czas kompilacji. Porównywane obiekty muszą być instancjami tej samej klasy (a nie żadnego z jej podtypów), a klasa nie może nadpisywać ==.
Jednym zaskakującym aspektem zmiany w Dart jest to, że niepuste klauzule przypadków muszą kończyć się przerwaniem lub, rzadziej, kontynuowaniem, rzutem lub powrotem. Oznacza to, że niepoprawne klauzule przypadków nie mogą zostać odrzucone. Musisz jawnie zakończyć niepustą klauzulę przypadku, zwykle z przerwą. Otrzymasz statyczne ostrzeżenie, jeśli pominiesz przerwanie, kontynuację, rzut lub powrót, a kod będzie błąd w tej lokalizacji w czasie wykonywania.
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;
}
Jeśli chcesz przewrócić się w niepustym case , możesz użyć continue i etykiety:
var command = 'OPEN';
switch (command) {
case 'OPEN':
executeOpen();
continue locked;
locked: case 'LOCKED':
executeClosed();
break;
}