Estaba leyendo ¿Por qué tenemos que el uso break
de switch
? , y me llevó a preguntarme por qué se permite la caída implícita en algunos lenguajes (como PHP y JavaScript), mientras que no hay soporte (AFAIK) para la caída explícita.
No es como si fuera necesario crear una nueva palabra clave, ya continue
que sería perfectamente apropiado y resolvería cualquier problema de ambigüedad sobre si el autor quería que un caso fracasara.
El formulario actualmente admitido es:
switch (s) {
case 1:
...
break;
case 2:
... //ambiguous, was break forgotten?
case 3:
...
break;
default:
...
break;
}
Mientras que tendría sentido que se escribiera como:
switch (s) {
case 1:
...
break;
case 2:
...
continue; //unambiguous, the author was explicit
case 3:
...
break;
default:
...
break;
}
Para los propósitos de esta pregunta, ignoremos la cuestión de si los fall-through son un buen estilo de codificación.
¿Existen idiomas que permitan la caída y lo hayan hecho explícito?
¿Hay alguna razón histórica que switch
permita la caída implícita en lugar de explícita?
goto case
en C #.
goto case
, como menciona pdr.
goto case
, por lo que la premisa de tu pregunta es un poco errónea.