Stavo leggendo Perché dobbiamo usare break
in switch
? e mi ha portato a chiedermi perché in alcune lingue (come PHP e JavaScript) sia consentito il fall-through implicito, mentre non esiste supporto (AFAIK) per il fall-through esplicito.
Non è come se fosse necessario creare una nuova parola chiave, come continue
sarebbe perfettamente appropriato, e risolverebbe qualsiasi problema di ambiguità sul fatto che l'autore intendesse far passare un caso.
Il modulo attualmente supportato è:
switch (s) {
case 1:
...
break;
case 2:
... //ambiguous, was break forgotten?
case 3:
...
break;
default:
...
break;
}
Considerando che avrebbe senso che fosse 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.
Esistono lingue che consentono il fall-through e lo hanno reso esplicito?
Ci sono ragioni storiche che switch
consentono un fallito implicito anziché esplicito?
goto case
in C #.
goto case
, come dice il pdr.
goto case
, quindi la premessa della tua domanda è un po 'sbagliata.