Hallo,
Ja, „switch“ ist IMO irgendwie kömplett dämlich definiert. Dies liegt hauptsächlich am jeweils pro „case“ erforderlichen „break“.
nein, es ist ja gerade nicht erforderlich. Für viele Fälle ja, weil man nur exakt einen Block pro Bedingung bzw. pro Fall ausführen möchte. Aber gerade gestaffelte Anweisungen lassen sich mit einer switch-Struktur sehr schön realisieren - etwa wenn Fall A bedeutet, das U(), V() und W() ausgeführt werden sollen, im Fall B nur noch V() und W(), und im Fall C nur noch W().
Zugegeben, das ist nicht der übliche Fall (und hier trifft er definitiv nicht zu), aber ich habe solche Konstruktionen schon mehr als einmal genutzt.
Hätte man das Verhalten dahingehend definiert, daß das nächste case - Schlüsselwort die switch- Anweisung beendet und ein Schlüsselwort definiert, das explizit den nächsten case-Block ausführen läßt, wäre switch wirklich eleganter, da dieser Fall wesentlich seltener vorkommt.
Das ist auch wieder wahr ...
Ich nutze aber switch dennoch lieber als eine Kette von gleichartigen if-Statements, weil es die zugrundeliegende Denkweise besser abbildet - meist habe ich *einen* Ausdruck, und möchte auf mehrere Werte dieses Ausdrucks reagieren. Da finde ich es blöd, einen Teil des Ausdrucks immer wieder notieren zu müssen.
Ciao,
Martin
Die letzten Worte des Systemadministrators:
Nur gut, dass ich ein intaktes Backup habe.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(