Der Martin: foreach mit bedingung?!

Beitrag lesen

Hallo,

der Auswahloperator (ternärer Operator, Fragezeichen-Operator) hat mit dem if-Statement nichts zu tun. Es ist zwar unter gewissen Voraussetzungen möglich, die beiden Dinge ineinander zu überführen (hier liegt so ein Fall vor), aber sie sind für ganz unterschiedliche Aufgaben gedacht.
ich habe den bisher nur als ersatz für if gehandhabt - was kann es noch?

vielleicht wird's klar, wenn man die Eigenschaften mal gegenüberstellt:

if     ?:
-----------------------------------------------------------
wertet boolschen Ausdruck aus                  ja     ja

führt abhängig vom boolschen Resultat          ja    nein
einen Anweisungsblock aus

berechnet abhängig vom boolschen Resultat     nein    ja
entweder Ausdruck A oder Ausdruck B

Liefert ein Ergebnis                          nein    ja

Kann als Teilausdruck eingesetzt werden       nein    ja

Damit sieht man deutlich: Der Fragezeichen-Operator ist vor allem dazu da, innerhalb eines *Ausdrucks* eingesetzt zu werden, weil er wie jeder andere Operator ein *Ergebnis* liefert.
Dafür kann er nicht, wie die if-Anweisung, ganze Anweisungsblöcke abhängig von der formulierten Bedingung ausführen.

Der Fragezeichen-Operator kann in eine plumpe if-Konstruktion überführt werden, wenn er nicht in einen weiteren Ausdruck verschachtelt auftritt. Plump deshalb, weil dann im if- und im else-Zweig zwei Anweisungen entstehen, die sich nur in einem einzigen Teilausdruck unterscheiden.

Umgekehrt kann genau dann eine if-else-Konstruktion in einen Ausdruck mit dem ternären Operator umgeschlüsselt werden, wenn sich die Anweisungen im if- und im else-Zweig nur in einem einzigen Teilausdruck unterscheiden.

So long,
 Martin

--
Küssen ist die schönste Methode, eine Frau zum Schweigen zu bringen.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(