Я читал, почему мы должны использовать break
в switch
? и это заставило меня задуматься, почему неявный переход разрешен в некоторых языках (таких как PHP и JavaScript), в то время как нет поддержки (AFAIK) для явного перехода.
Это не continue
значит, что нужно было бы создать новое ключевое слово, как это было бы совершенно уместно, и это решило бы любые вопросы двусмысленности относительно того, намеревался ли автор довести дело до конца.
В настоящее время поддерживаемая форма:
switch (s) {
case 1:
...
break;
case 2:
... //ambiguous, was break forgotten?
case 3:
...
break;
default:
...
break;
}
Принимая во внимание, что имеет смысл записать это как:
switch (s) {
case 1:
...
break;
case 2:
...
continue; //unambiguous, the author was explicit
case 3:
...
break;
default:
...
break;
}
Для целей этого вопроса давайте проигнорируем вопрос о том, являются ли провалы хорошим стилем кодирования.
Существуют ли какие-либо языки, которые допускают провал и сделали это явным?
Существуют ли какие-либо исторические причины, которые switch
допускают явный провал вместо явных?
goto case
в C #.
goto case
, как упоминает pdr.
goto case
, поэтому предпосылка вашего вопроса несколько ошибочна.