dart
Поток управления
Поиск…
Если еще
Дарт имеет, если еще:
if (year >= 2001) {
print('21st century');
} else if (year >= 1901) {
print('20th century');
} else {
print('We Must Go Back!');
}
Dart также имеет трехкомпонентной if оператор:
var foo = true;
print(foo ? 'Foo' : 'Bar'); // Displays "Foo".
Пока цикл
Хотя циклы и делают, пока в Dart разрешены петли:
while(peopleAreClapping()) {
playSongs();
}
а также:
do {
processRequest();
} while(stillRunning());
Циклы могут быть завершены с использованием разрыва:
while (true) {
if (shutDownRequested()) break;
processIncomingRequests();
}
Вы можете пропустить итерации в цикле, используя continue:
for (var i = 0; i < bigNumber; i++) {
if (i.isEven){
continue;
}
doSomething();
}
Для цикла
Допускаются два типа циклов:
for (int month = 1; month <= 12; month++) {
print(month);
}
а также:
for (var object in flybyObjects) {
print(object);
}
Цикл for-in удобен при простое повторение по коллекции Iterable . Существует также метод forEach который вы можете вызвать объекты Iterable которые ведут себя как for-in :
flybyObjects.forEach((object) => print(object));
или, более кратко:
flybyObjects.forEach(print);
Корпус выключателя
Dart имеет случай переключения, который можно использовать вместо длинных операторов 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();
}
Вы можете сравнить только константы integer, string или compile-time. Сравнимые объекты должны быть экземплярами одного и того же класса (а не любого из его подтипов), и класс не должен переопределять ==.
Одним из удивительных аспектов переключения в Дарте является то, что непустые аргументы case должны заканчиваться разрывом или, реже, продолжать, бросать или возвращаться. То есть непустые аргументы case не могут провалиться. Вы должны явно закрыть предложение непустого случая, обычно с перерывом. Вы получите статическое предупреждение, если вы опустите break, continue, throw или return, и код будет ошибкой в этом месте во время выполнения.
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;
}
Если вы хотите провалиться в непустом case , вы можете использовать continue и label:
var command = 'OPEN';
switch (command) {
case 'OPEN':
executeOpen();
continue locked;
locked: case 'LOCKED':
executeClosed();
break;
}