magicmarcy.de | Der ternäre Operator

Der ternäre Operator

26. September 2019 - Lesezeit: 2 Minuten

Eines meiner Lieblingsfunktionen (in Java) ist der ternäre Operator denn er vereinfacht häufig Anwendungsfälle von denen ich einige hier ein wenig näher betrachten möchte.

Nehmen wir einfach mal an, dass du an irgendeiner Stelle deiner XHTML-Seite das Problem hast, dass du die Hintergrundfarbe deines DIVs abhängig vom darin enthaltenen Wert gestelten möchtest. Du könntest dafür in deiner Klasse eine Eigenschaft hinterlegen und dazu eine Methode die den Wert den du benötigst, abhängig von einem anderen Wert oder Ereignis ändert und in deine Eigenschaft schreibt. Aber das geht auch einfacher…

Nehmen wir dazu weiterhin an, dass es sich um eine Tabelle handelt, du die Daten der Tabelle über eine DataTable ausgeben lässt und somit deine XHTML-Datei ja eigentlich nur die Struktur für einen Datensatz abbildet.

Hier kommt also eine meiner Lieblingsfunktionen ins Spiel: Der ternäre Operator!

Und im Grunde ist dieser auch ziemlich einfach zu verwenden denn es handelt sich um eine sehr vereinfacht dargstellte if-else-Anweisung.

Um beim obigen Beispiel zu bleiben nehmen wir mal folgende Annahmen mit auf:

Wir möchten in der Zelle in der der Wert größer als 5 ist, diese Zahl in rot ausgeben (dazu haben wir die StyleClass “red”) und Werte und alles andere in gelb (dazu haben wir die Style-Class “yellow”). Das Ganze könnte dann so aussehen:

<h:outputText value="#{controller.wert}" styleClass="#{controller.wert > 5 ? 'red' : 'yellow'}"/>

Sieht gar nicht so schwer aus, oder?

Da Ganzen lässt sich natürlich auch noch weiter verschachteln, ist aber dann weniger gut lesbar.

<h:outputText value="#{controller.wert}" styleClass="#{controller.wert > 5 ? 'red' : controller.wert > 0 ? 'yellow' : 'blue'}"/>

Generell sollte natürlich auf Logik in der XHTML-Datei verzichtet werden aber ich glaube, dass dieses Beispiel gerade noch gut genug dafür ist.

Natürlich lässt sich das ganze nicht nur in xhtml-Dateien per Expression Language nutzen. Auch in ganz normalen Java Klassen kann man das Ganze sehr gut nutzen.

Nehmen wir einfache Zuweisungen von Variablen je nach Gegebenheit. Wenn “isIrgendwas” true ist, dann wird der Variablen “ergebnis” der Wert “sucess” zugewiesen, ansonsten der Wert “error”. Schauen wir uns das mit einer ganz normalen if-else-Anweisung an:

String ergebnis = "";
if (isIrgendwas) {
ergebnis = "success";
} else {
ergebnis = "error";
}

Nicht sonderlich kompliziert, denke ich. Der Code lässt sich gut lesen und es ist auf den ersten Blick klar was hier passiert. Dennoch haben wir hier 6 Zeilen verwendet für eine Funktion, die ziemlich trivial ist. Dabei macht das folgende tatsächlich genau das gleiche:

String ergebnis = isIrgendwas ? "success" : "error";

Man kann also durchaus einfache Dinge ebenso einfach abbilden und es ist gut, dass es immer wieder Funktionen (oder eher Funktionsweisen) gibt, die es dem Entwickler noch einfacher machen Code zu schreiben und auch Code zu verstehen.

Es wurden noch keine Kommentare verfasst, sei der erste!

Support

Wenn du mich und meine Arbeit unterstützen möchtest, freue ich mich sehr über eine kleine Aufmerksamkeit in Form eines Kaffees ;-)



Weitere Informationen, wie du mich und meine Arbeit unterstützen kannst, findest du hier.