Dart Bedingungsausdrücke

Die hier behandelten Bedingungsoperatoren sind keine bedingten Anweisungen wie if-else. Gemeint sind der Ternäroperator und der Null-Coalescing-Operator.

Zwei Arten von Bedingungsoperatoren

Dart stellt zwei kompakte Bedingungsoperatoren zur Verfügung, die lange if-else-Verzweigungen ersetzen. Bedingungsprüfung, Zuweisung und Rückgabe lassen sich damit in einer einzigen Zeile schreiben.

  1. Ternärer Bedingungsoperator: condition ? expr1 : expr2
  2. Null-Coalescing-Operator: expr1 ?? expr2

Der Ternäroperator condition ? expr1 : expr2

Syntax

Boolesche Bedingung ? Ausdruck bei wahr : Ausdruck bei falsch

Liefert condition das Ergebnis true, wird expr1 zurückgegeben; bei false wird stattdessen expr2 ausgegeben.

Diese condition liefert einen booleschen Wert, anhand dieses Boolschen Werts wird einer von zwei Werte zur Zuweisung oder Rückgabe ausgewählt.

Beispiel:

void main() {
    bool isRain = true;
	// Zuweisung per Ternärausdruck
	var result = isRain ? 'Es regnet' : 'Es regnet nicht';
	print(result); // Es regnet

	isRain = false;
	result = isRain ? 'Es regnet' : 'Es regnet nicht';
	print(result); // Es regnet nicht
}Code-Sprache: Dart (dart)

Ausgabe der Ausführung

D:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
Es regnet
Es regnet nichtCode-Sprache: CSS (css)

Wenn du bereits if-else kennst, kannst du den Code auch so schreiben:

void main() {
    bool isRain = true;

	String result;
	if (isRain) {
	  result = 'Es regnet';
	} else {
	  result = 'Es regnet nicht';
	}
	print(result);//Es regnet
}Code-Sprache: Dart (dart)

Null-Coalescing-Operator

Prüft, ob eine Variable null ist und erlaubt die schnelle Zuweisung eines Standardwerts.

Syntax expr1 ?? expr2

Nullbarer Ausdruck ?? Standardwert
  • Ist expr1 nicht null, wird direkt expr1 zurückgegeben;
  • Ist expr1 gleich null, wird expr2 zurückgegeben

Offizielles Beispiel

void main() {
	// Parameter ist ein nullbarer String String?
	String playerName(String? name) => name ?? 'Guest';

	print(playerName("Tom"));  // Tom
	print(playerName(null));   // Guest
}Code-Sprache: JavaScript (javascript)

Wir definieren die Funktion playerName für den Spielernamen mit einem nullbaren String-Parameter. Mit dem Operator ?? legen wir einen Standardwert fest: Wird als name null übergeben, wird standardmäßig Guest ausgegeben.

Zusatzinformation

Bei playerName handelt es sich um eine Pfeilfunktion, eine verkürzte Schreibweise für Funktionen. Wir lernen diese später kennen, sie ist vollständig äquivalent zum folgenden Code:

String playerName(String? name) {
  return name ?? 'Guest';
}Code-Sprache: Dart (dart)
Vergleich äquivalenter Schreibweisen
Umsetzung mit Ternäroperator
String playerName(String? name) => name != null ? name : 'Guest';Code-Sprache: JavaScript (javascript)
Vollständige if-else-Anweisung
String playerName(String? name) {
  if (name != null) {
    return name;
  } else {
    return 'Guest';
  }
}Code-Sprache: JavaScript (javascript)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert