Dart Kurs Naechste Lektion

Lektion 06 - Ternaerer Operator

Kurze Entscheidungen sauber schreiben

Der ternaere Operator ist eine Kurzform fuer einfache if/else-Entscheidungen. Er ist praktisch, wenn du je nach Bedingung genau einen von zwei Werten auswaehlen willst.

1. Erinnerung: if/else

Mit if pruefst du eine Bedingung. Wenn sie wahr ist, wird der erste Block ausgefuehrt. Sonst wird der else-Block ausgefuehrt.

int alter = 25;
String begruessung;

if (alter < 40) {
  begruessung = 'Hallo';
} else {
  begruessung = 'Guten Tag';
}

2. Die Kurzform

Der ternaere Operator schreibt diese einfache Auswahl in eine Zeile: Bedingung, Fragezeichen, Wert bei wahr, Doppelpunkt, Wert bei falsch.

int alter = 25;

String begruessung =
    alter < 40 ? 'Hallo' : 'Guten Tag';

Das Ergebnis ist hier ein String, weil beide Seiten Text liefern.

3. Aufbau der Syntax

TeilBedeutung
alter < 40Bedingung, die wahr oder falsch ist
?Danach kommt der Wert fuer wahr
'Hallo'Wert, wenn die Bedingung wahr ist
:Trennt wahr-Fall und falsch-Fall
'Guten Tag'Wert, wenn die Bedingung falsch ist
Bedingung ? WertWennWahr : WertWennFalsch

4. Wichtig: Er liefert einen Wert

Der ternaere Operator ist keine komplette Programmstruktur wie ein grosser if-Block. Er ist besonders gut, wenn du einen Wert zuweisen oder direkt ausgeben willst.

Zuweisung

bool bestanden = true;

String text = bestanden
    ? 'Bestanden'
    : 'Nicht bestanden';

Direkte Ausgabe

int punkte = 8;

print(punkte >= 10
    ? 'Sehr gut'
    : 'Weiter ueben');

5. Beispiel aus der Greeter-Aufgabe

Bei der Greeter-Aufgabe kann ein Teil der Entscheidung kurz geschrieben werden. Zum Beispiel die Frage, ob jemand informell oder formell begruesst wird.

int alter = 42;
String vorname = 'Jutta';
String nachname = 'Jenssen';

String begruessung = alter < 40
    ? 'Hallo, $vorname!'
    : 'Guten Tag, Frau $nachname';

print(begruessung);

Fuer laengere Logik mit mehreren Schritten bleibt if/else oft lesbarer.

6. Verbindung zu Null Safety

Mit nullable Werten kannst du den ternaeren Operator nutzen, um einen Ersatzwert zu erzeugen. Oft ist dafuer aber ?? noch kuerzer.

Ternaer

String? name = null;

String ausgabe = name != null
    ? name
    : 'Gast';

Null-Coalescing

String? name = null;

String ausgabe = name ?? 'Gast';

Merke: ?? ist ideal fuer "wenn null, dann Ersatzwert". Der ternaere Operator ist allgemeiner und kann jede boolesche Bedingung pruefen.

7. Wann nicht verwenden?

Wenn eine Entscheidung mehrere Anweisungen, mehrere Bedingungen oder viel Text hat, wird der ternaere Operator schnell unuebersichtlich. Dann ist if/else besser.

// Lieber nicht:
String text = alter < 40 ? aktiv ? 'jung aktiv' : 'jung inaktiv' : aktiv ? 'aelter aktiv' : 'aelter inaktiv';

Sobald du beim Lesen suchen musst, welcher Doppelpunkt zu welchem Fragezeichen gehoert, ist es Zeit fuer normales if/else.

8. Mini-Aufgaben

  1. Schreibe int alter = 18; und waehle mit dem ternaeren Operator zwischen 'volljaehrig' und 'minderjaehrig'.
  2. Schreibe int punkte = 7; und gib 'bestanden' aus, wenn mindestens 6 Punkte erreicht wurden.
  3. Baue ein if/else-Beispiel in einen ternaeren Operator um.
  4. Baue einen zu langen ternaeren Operator wieder in ein lesbares if/else um.
Weiter zu Flutter Grundlagen