Chi ha deciso (e in base a quali concetti) che la switch
costruzione (in molte lingue) deve usare break
in ogni affermazione?
Perché dobbiamo scrivere qualcosa del genere:
switch(a)
{
case 1:
result = 'one';
break;
case 2:
result = 'two';
break;
default:
result = 'not determined';
break;
}
(notato questo in PHP e JS; probabilmente ci sono molte altre lingue che usano questo)
Se switch
è un'alternativa di if
, perché non possiamo usare la stessa costruzione di if
? Vale a dire:
switch(a)
{
case 1:
{
result = 'one';
}
case 2:
{
result = 'two';
}
default:
{
result = 'not determined';
}
}
Si dice che break
impedisce l'esecuzione del blocco successivo a quello attuale. Ma qualcuno si imbatte davvero nella situazione, dove c'era bisogno di eseguire il blocco corrente e quelli seguenti? Non l'ho fatto Per me, break
c'è sempre. In ogni blocco. In ogni codice.
case 'a': case 'A': case 'b': case 'B'
ma soprattutto perché non posso farlo case in [ 'a', 'A', 'b', 'B' ]
. Una domanda leggermente migliore è, nella mia attuale lingua preferita (C #), l'interruzione è obbligatoria e non vi è alcuna caduta implicita; dimenticare break
è un errore di sintassi ...: \
case TOKEN_A: /*set flag*/; case TOKEN_B: /*consume token*/; break; case TOKEN_C: /*...*/
break
è presente ovunque" è una regola significativamente più semplice da implementare rispetto a "Non emettere un salto se fallthrough
è presente in un switch
".
CASE
un'istruzione in modo equivalente a un blocco if / elseif gigante.