¿Quién decidió (y con base en qué conceptos) que la switchconstrucción (en muchos idiomas) tiene que usar breaken cada enunciado?
¿Por qué tenemos que escribir algo como esto?
switch(a)
{
case 1:
result = 'one';
break;
case 2:
result = 'two';
break;
default:
result = 'not determined';
break;
}
(Noté esto en PHP y JS; probablemente hay muchos otros lenguajes que usan esto)
Si switches una alternativa de if, ¿por qué no podemos usar la misma construcción que para if? Es decir:
switch(a)
{
case 1:
{
result = 'one';
}
case 2:
{
result = 'two';
}
default:
{
result = 'not determined';
}
}
Se dice que breakimpide la ejecución del bloque que sigue al actual. Pero, ¿alguien realmente se encuentra con la situación, donde había alguna necesidad de ejecutar el bloque actual y los siguientes? No lo hice Para mí, breaksiempre está ahí. En cada cuadra. En cada codigo.
case 'a': case 'A': case 'b': case 'B'pero principalmente porque no puedo hacerlo case in [ 'a', 'A', 'b', 'B' ]. Una pregunta un poco mejor es, en mi lenguaje preferido actual (C #), el descanso es obligatorio , y no hay una caída implícita; olvidar breakes un error de sintaxis ...: \
case TOKEN_A: /*set flag*/; case TOKEN_B: /*consume token*/; break; case TOKEN_C: /*...*/
breakestá presente en alguna parte" es una regla significativamente más simple de implementar que "No emitir un salto si fallthroughestá presente en un switch".
CASEdeclaración de manera equivalente a un bloque gigante if / elseif.