dart
Flujo de control
Buscar..
Si mas
Dardo tiene si otra cosa:
if (year >= 2001) {
print('21st century');
} else if (year >= 1901) {
print('20th century');
} else {
print('We Must Go Back!');
}
El dardo también tiene un operador ternario if :
var foo = true;
print(foo ? 'Foo' : 'Bar'); // Displays "Foo".
Mientras bucle
Mientras que los bucles y hacer mientras que los bucles están permitidos en Dart:
while(peopleAreClapping()) {
playSongs();
}
y:
do {
processRequest();
} while(stillRunning());
Los bucles se pueden terminar con una ruptura:
while (true) {
if (shutDownRequested()) break;
processIncomingRequests();
}
Puede omitir iteraciones en un bucle usando continue:
for (var i = 0; i < bigNumber; i++) {
if (i.isEven){
continue;
}
doSomething();
}
En bucle
Se permiten dos tipos de bucles for:
for (int month = 1; month <= 12; month++) {
print(month);
}
y:
for (var object in flybyObjects) {
print(object);
}
El bucle for-in es conveniente cuando simplemente se itera sobre una colección Iterable . También hay un método forEach que puedes invocar objetos Iterable que se comportan como for-in :
flybyObjects.forEach((object) => print(object));
o, más concisamente:
flybyObjects.forEach(print);
Caja de interruptores
Dart tiene un caso de conmutador que se puede usar en lugar de largas declaraciones 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();
}
Solo puede comparar constantes enteras, de cadena o de tiempo de compilación. Los objetos comparados deben ser instancias de la misma clase (y no de ninguno de sus subtipos), y la clase no debe anular ==.
Un aspecto sorprendente del cambio en Dart es que las cláusulas de casos no vacíos deben terminar con un descanso, o con menos frecuencia, continuar, lanzar o devolver. Es decir, las cláusulas de casos no vacíos no pueden fallar. Debe finalizar explícitamente una cláusula de caso no vacía, generalmente con una ruptura. Recibirá una advertencia estática si omite el descanso, la continuación, el lanzamiento o la devolución, y el código generará un error en esa ubicación en el tiempo de ejecución.
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;
}
Si desea obtener información detallada en un case que no esté vacío, puede usar continue y una etiqueta:
var command = 'OPEN';
switch (command) {
case 'OPEN':
executeOpen();
continue locked;
locked: case 'LOCKED':
executeClosed();
break;
}