Eu estava lendo Por que temos para uso break
em switch
? , e me levou a pensar por que o fall-through implícito é permitido em algumas linguagens (como PHP e JavaScript), enquanto não há suporte (AFAIK) para o fall-through explícito.
Não é como se uma nova palavra-chave precisasse ser criada, como continue
seria perfeitamente apropriada e resolveria quaisquer problemas de ambiguidade, para saber se o autor pretendia que um caso ocorresse.
O formulário atualmente suportado é:
switch (s) {
case 1:
...
break;
case 2:
... //ambiguous, was break forgotten?
case 3:
...
break;
default:
...
break;
}
Considerando que faria sentido para ele ser escrito como:
switch (s) {
case 1:
...
break;
case 2:
...
continue; //unambiguous, the author was explicit
case 3:
...
break;
default:
...
break;
}
Para os fins desta pergunta, vamos ignorar a questão de saber se os fall-throughs são ou não um bom estilo de codificação.
Existem idiomas que permitam falhas e o tornassem explícito?
Existem razões históricas que switch
permitam falhas implícitas em vez de explícitas?
goto case
em c #.
goto case
, como pdr menciona.
goto case
, portanto a premissa da sua pergunta está um pouco errada.