Sök…


Om annat

Dart har If Else:

if (year >= 2001) {
  print('21st century');
} else if (year >= 1901) {
  print('20th century');
} else {
  print('We Must Go Back!');  
}

Dart har också en ternär if operatören:

var foo = true;
print(foo ? 'Foo' : 'Bar'); // Displays "Foo".

Medan Loop

Medan slingor och gör medan slingor är tillåtna i Dart:

while(peopleAreClapping()) {
  playSongs();
}

och:

do {
  processRequest();
} while(stillRunning());

Loops kan avslutas med en paus:

while (true) {
  if (shutDownRequested()) break;
  processIncomingRequests();
}

Du kan hoppa över iterationer i en slinga med fortsätt:

for (var i = 0; i < bigNumber; i++) {
  if (i.isEven){
    continue;
  }
  doSomething();
}

För slinga

Två typer av slingor är tillåtna:

for (int month = 1; month <= 12; month++) {
  print(month);
}

och:

for (var object in flybyObjects) {
  print(object);
}

for-in loopen är bekväm när du bara itererar över en Iterable kollektion. Det finns också en forEach metod som du kan anropa Iterable objekt som uppträder som in for-in :

flybyObjects.forEach((object) => print(object));

eller mer kortfattat:

flybyObjects.forEach(print);

Switch fallet

Dart har ett växelfod som kan användas istället för långa uttalanden om annat:

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

Du kan bara jämföra heltals-, sträng- eller kompileringstidskonstanter. De jämförda objekten måste vara instanser av samma klass (och inte någon av dess undertyper), och klassen får inte åsidosätta ==.

En överraskande aspekt av omkopplaren i Dart är att icke-tomma ärende klausuler måste sluta med brott, eller mindre vanligt, fortsätta, kasta eller återvända. Det vill säga, icke-tomma ärende klausuler kan inte falla igenom. Du måste uttryckligen avsluta en klausul som inte är tom, vanligtvis med en paus. Du får en statisk varning om du utelämnar paus, fortsätta, kasta eller återvända, och koden kommer att fel på den platsen vid körning.

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

Om du vill ha fall i ett icke-tomt case kan du använda continue och en etikett:

      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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow