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