Qui a décidé (et sur quels concepts) que la switch
construction (dans de nombreuses langues) doit utiliser break
dans chaque énoncé?
Pourquoi devons-nous écrire quelque chose comme ceci:
switch(a)
{
case 1:
result = 'one';
break;
case 2:
result = 'two';
break;
default:
result = 'not determined';
break;
}
(remarqué cela en PHP et JS; il y a probablement beaucoup d'autres langages qui l'utilisent)
Si switch
est une alternative de if
, pourquoi nous ne pouvons pas utiliser la même construction que pour if
? C'est à dire:
switch(a)
{
case 1:
{
result = 'one';
}
case 2:
{
result = 'two';
}
default:
{
result = 'not determined';
}
}
On dit que cela break
empêche l'exécution du bloc suivant celui en cours. Mais, est-ce que quelqu'un se heurte réellement à la situation, où il était nécessaire d'exécuter le bloc actuel et les suivants? Je n'ai pas Pour moi, break
c'est toujours là. Dans chaque bloc. Dans chaque code.
case 'a': case 'A': case 'b': case 'B'
mais surtout parce que je ne peux pas faire case in [ 'a', 'A', 'b', 'B' ]
. Une question légèrement meilleure est, dans mon langage préféré actuel (C #), la pause est obligatoire et il n’ya pas de chute implicite; l'oubli break
est une erreur de syntaxe ...: \
case TOKEN_A: /*set flag*/; case TOKEN_B: /*consume token*/; break; case TOKEN_C: /*...*/
break
est présent n'importe où» est une règle beaucoup plus simple à appliquer que «Ne pas émettre de saut si fallthrough
est présent dans un switch
».
CASE
instruction de manière équivalente à un bloc géant if / elseif.