Я думаю, что не понимаю, как область действия работает в корпусе коммутатора.Объем переменной в корпусе коммутатора
Может кто-нибудь объяснить мне, почему первый код не компилируется, но второй делает?
Код 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;
}
Код 2:
int key = 2;
if (key == 1) {
String str = "1";
return str;
} else if (key == 2) {
String str = "2";
return str;
}
Каким образом объем переменной "ул" не содержится в случае 1?
Если я пропускаю декларацию случае 1 переменных «ули» никогда не объявлен ...
Слушайте этого парня. Он прав. – John
Правильно. Но я был бы очень доволен любым программистом в моей команде, который использует этот «синтаксис» без ОЧЕНЬ хорошей причины. Это рецепт путаницы и ошибок. Он визуально скрывает тот факт, что первый блок case (если он не был для 'return')« продолжается »даже после закрытия скобки - и помогает забыть« break ». – leonbloy
также: используйте 'break' для обслуживания и предотвращения ошибок! даже если это не требуется. – worenga