Ich habe eine ziemlich lange switch-case-Anweisung. Einige der Fälle sind wirklich kurz und trivial. Einige sind länger und einige Variablen benötigen, die nie irgendwo anders verwendet werden, wie folgt aus:Ist es eine gute Idee, eine Variable in einem lokalen Block für einen Fall einer switch-Anweisung zu definieren?
switch (action) {
case kSimpleAction:
// Do something simple
break;
case kComplexAction: {
int specialVariable = 5;
// Do something complex with specialVariable
} break;
}
Die Alternative, dass die Variable deklarieren würde, bevor sie in die switch
wie dies geht:
int specialVariable = 5;
switch (action) {
case kSimpleAction:
// Do something simple
break;
case kComplexAction:
// Do something complex with specialVariable
break;
}
Dies kann eher verwirrend, da nicht klar ist, zu welcher case
die Variable gehört und welche unnötigen Speicher verbraucht.
Allerdings habe ich diese Verwendung nirgendwo anders gesehen.
Denken Sie, es ist eine gute Idee, Variablen lokal in einem Block für eine einzige case
zu deklarieren?
Ist jeder Fall ein Bereich? Ich frage, weil ein Fall an sich keinen Sinn hat ohne einen Schalter, sicher? – gbn
@gbn - ein 'case' erstellt selbst keinen neuen Bereich.Der Code müsste '{}' hinzufügen, um einen neuen Bereich einzuführen (wie das OP in seinem ersten Beispiel tut). –
Ja, Sie müssen einen "Geltungsbereich" erstellen, wenn Sie die Variable in der Schreibweise verwenden wollen (Wortspiel), in der die Variable nur in diesem Fall verwendet wird. – Max