Stavo leggendo Perché dobbiamo usare break
in switch
? , e mi ha portato a chiedermi il motivo per cui è implicita la ricaduta implicita in alcuni linguaggi (come PHP e JavaScript), mentre non c'è supporto (AFAIK) per l'esplicito fall-through .
Non è come se fosse stata creata una nuova parola chiave, dato che continue
sarebbe perfettamente appropriato e risolverebbe qualsiasi problema di ambiguità per stabilire se l'autore intendesse che un caso fallisse.
Il modulo attualmente supportato è:
switch (s) {
case 1:
...
break;
case 2:
... //ambiguous, was break forgotten?
case 3:
...
break;
default:
...
break;
}
Considerando che avrebbe senso essere scritto come:
switch (s) {
case 1:
...
break;
case 2:
...
continue; //unambiguous, the author was explicit
case 3:
...
break;
default:
...
break;
}
Ai fini di questa domanda, ignoriamo la questione se i fall-through siano o meno un buon stile di codifica.