Myślę, że nie rozumiem, w jaki sposób zakres działa w przypadku przełącznika.Zakres zmiennej w obudowie przełącznika
Czy ktoś może mi wytłumaczyć dlaczego pierwszy kod się nie kompiluje, a drugi?
Kod 1:
int key = 2;
switch (key) {
case 1:
String str = "1";
return str;
case 2:
String str = "2"; // duplicate declaration of "str" according to Eclipse.
return str;
}
Kod 2:
int key = 2;
if (key == 1) {
String str = "1";
return str;
} else if (key == 2) {
String str = "2";
return str;
}
Dlaczego zakres zmiennej "str" nie jest zawarty w sprawie 1?
Jeśli pominąć deklarację przypadku 1 zmienna „str” nie jest zadeklarowana ...
Posłuchaj tego gościa. On ma rację. – John
Prawidłowo. Ale byłbym bardzo zdenerwowany przez jakiegokolwiek programistę w moim zespole, który używa tej "składni" bez bardzo dobrego powodu. To przepis na zamieszanie i błędy. To wizualnie ukrywa fakt, że pierwszy blok case (jeśli nie był dla 'return')" kontynuuje "nawet po nawiasie zamykającym - i pomaga zapomnieć o' break'. – leonbloy
również: użyj 'break' dla łatwości konserwacji i zapobiegania błędom! nawet jeśli nie jest to wymagane. – worenga