Czytałam Dlaczego mamy do wykorzystania break
w switch
? i doprowadziło mnie do zastanowienia się, dlaczego niejawne przejście jest dozwolone w niektórych językach (takich jak PHP i JavaScript), podczas gdy nie ma wsparcia (AFAIK) dla jawnego przejścia.
To nie jest tak, że trzeba utworzyć nowe słowo kluczowe, co continue
byłoby idealnie odpowiednie, i rozwiązałoby wszelkie niejednoznaczne kwestie dotyczące tego, czy autor chciał, aby sprawa się zakończyła.
Aktualnie obsługiwany formularz to:
switch (s) {
case 1:
...
break;
case 2:
... //ambiguous, was break forgotten?
case 3:
...
break;
default:
...
break;
}
Mając na uwadze, że sensowne byłoby napisanie go jako:
switch (s) {
case 1:
...
break;
case 2:
...
continue; //unambiguous, the author was explicit
case 3:
...
break;
default:
...
break;
}
Na potrzeby tego pytania zignorujmy kwestię, czy pomyłki są dobrym stylem kodowania.
Czy istnieją jakieś języki, które pozwalają na awarię i wyraźnie ją wyrażają?
Czy istnieją jakieś historyczne powody, które switch
pozwalają na domniemany upadek zamiast jawnego?
goto case
w C #.
goto case
, jak wspomina pdr.
goto case
, więc przesłanka twojego pytania jest nieco błędna.