Perché i diversi corpi dei casi non sono automaticamente nella loro portata? Ad esempio, se dovessi fare questo:Perché i diversi corpi delle condizioni del caso non sono in ambito diverso?
switch(condition) {
case CONDITION_ONE:
int account = 27373;
case CONDITION_TWO:
// account var not needed here
case CONDITION_THREE:
// account var not needed here
case CONDITION_FOUR:
int account = 90384;
}
il compilatore possa lamentare ridefinizioni delle variabili locali. Comprendo ho potuto fare questo:
switch(condition) {
case CONDITION_ONE: {
int account = 27373;
}
case CONDITION_TWO: {
// account var not needed here
}
case CONDITION_THREE: {
// account var not needed here
}
case CONDITION_FOUR: {
int account = 90384;
}
}
di mettere un blocco attorno a ciascun insieme di istruzioni da eseguire per mettere ogni variabile account
nel proprio ambito. Ma perché il linguaggio non fa questo per me?
Perché dovresti voler dichiarare una variabile locale nel corpo di CONDITION_ONE
e quindi utilizzarla in CONDITION_TWO
? Sembra un'idea TERRIBILE che dovrebbe essere esplicitamente bandita, non implicitamente consentita.
** Perché [lui] (http: //en.wikipedia.org/wiki/James_Gosling "James Gosling") ha detto così !! ** * (La mia nuova risposta preferita) * – jjnguy
Questa è una domanda dannatamente buona; Ieri ho incontrato esattamente la stessa frustrazione. –
Più schiettamente: perché dovresti voler dichiarare una variabile locale in un interruttore? Usali con parsimonia; mettere la logica di controllo in un caso è una ricetta per un programma confuso! –