Creo que no entiendo cómo funciona el alcance en una caja de interruptor.Alcance de la variable en una caja de interruptor
¿Puede alguien explicarme por qué el primer código no se compila pero el segundo sí?
Código 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;
}
Código 2:
int key = 2;
if (key == 1) {
String str = "1";
return str;
} else if (key == 2) {
String str = "2";
return str;
}
¿Cómo es que el alcance de la "str" variable no está contenida dentro de la caja 1?
Si me salto la declaración de caso 1 el "str" variables no se declara ...
Escucha a este tipo. El tiene razón. – John
Correcto. Pero estaría muy molesto con cualquier programador de mi equipo que use esta "sintaxis" sin una MUY buena razón. Es una receta para la confusión y los errores. Oculta visualmente el hecho de que el primer bloque de casos (si no fuera por el 'retorno') "continúa" incluso después del corchete de cierre, y ayuda a olvidar el 'break '. – leonbloy
también: ¡use 'break' para mantener y prevenir errores! incluso si no es requerido. – worenga