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;
      }


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow