Hi,
Ich meine eine Fehlerbeschreibung à la "Mein Programm verhält sich scheinbar so, als ob immer der zweite Fall der switch-Kontrollstruktur eintritt."
break;
ist m.E. ein Designfehler vieler Programmiersprachen.
In fast allen Fällen, wenn Code hinter dem Case vorhanden ist, soll der Code des/der nächsten case(s) nicht ausgeführt werden.
Es wäre also wesentlich weniger fehleranfällig gewesen, wenn das Break implizit gesetzt würde, es sei denn, man markiert per fallthrough die Tatsache, daß wirklich der nächste case ausgeführt werden soll.
Ich würde statt
switch(x)
{
case 1:
case 2:
echo "1 oder 2";
break;
case 3:
echo "3";
break;
case 4:
echo "4";
case 5:
echo "4 oder 5";
break;
}
sowas vorziehen:
switch(x)
{
case 1, 2: //für mehrere Fälle der gleiche Code ==> die Fälle kommasepariert auflisten
echo "1 oder 2";
case 3:
echo "3";
case 4:
echo "4";
fallthrough; //hier der Sonderfall, Code des nächsten Case auch ausführen
case 5:
echo "4 oder 5";
}
Aber leider ist diese m.E. wesentlich weniger fehleranfällige Variante in keiner mir bekannten Sprache (und schon gar nicht in den von mir benutzten Sprachen) implementiert.
Statt "fallthrough" könnte auch "next" oder ähnliches verwendet werden ...
cu,
Andreas
Warum nennt sich Andreas hier MudGuard?
O o ostern ...
Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.