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


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow