[latex]Mae govannen![/latex]
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.
Und genau das entspricht der if .. elseif .. elseif .. else - Struktur, von der hierzuthread die Rede war. hier wäre jeweils ein break erforderlich. somit ist switch hier eher unelegant (zu schreiben)
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.
Natürlich. Das ist einer der Sonderfälle, bei dem switch seine ganze Stärke ausspielen kann, aber eben nicht der Normalfall. Dieser ist entweder - oder - oder und da müssen eben leider diese dämlichen breaks mit rein. Ich hätte es wesentlich intuitiver empfunden, wenn
switch ($i) {
case 0:
U();
case 1:
V();
case 2:
W();
}
sich wie if .. elseif .. elseif ... verhalten würde.
Deinen Sonderfall würde man dann beispielsweise per
switch ($i) {
case 0:
U();
nextcase;
case 1:
V();
nextcase;
case 2:
W();
}
abbilden können. In _diesem_ Fall hat man dann natürlich das Mehr an Schreibarbeit, welches man momentan bei entweder-oder-switch
hat
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.
Es kommt darauf an. switch ist irgendwie in jeder Form schlecht zu schreiben, entweder man nutzt die Notation wie oben, dann hat man hinter der letzten Anweisung eine Einrückungsänderung von zwei Einheiten, wodurch die schließende Klammer ziemlich alleine steht (was durch Verwendung der alternativen Syntax etwas besser wird) oder man zieht die case-Blöcke auf die gleiche Ebene wie switch selbst, das ist allerdings nicht mehr so übersichtlich. Insofern entscheide ich über die Verwendung von switch gegenüber if ... elseif meist Stubbe.
Stur lächeln und winken, Männer!
Kai
It all began when I went on a tour, hoping to find some furniture
Followed a sign saying "Beautiful Chest", led to a lady who showed me her best)
SelfHTML-Forum-Stylesheet