¿Quién decidió (y con base en qué conceptos) que la switch
construcción (en muchos idiomas) tiene que usar break
en 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 switch
es 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 break
impide 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í, break
siempre 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 break
es un error de sintaxis ...: \
case TOKEN_A: /*set flag*/; case TOKEN_B: /*consume token*/; break; case TOKEN_C: /*...*/
break
está presente en alguna parte" es una regla significativamente más simple de implementar que "No emitir un salto si fallthrough
está presente en un switch
".
CASE
declaración de manera equivalente a un bloque gigante if / elseif.