Estoy estudiando la expresión de cambio y me gustaría saber cómo pasar el control al método del invocador porque "rendimiento" simplemente sale de la expresión de cambio. No puedo encontrar ninguna manera de hacer que se comporte como la declaración de cambio clásica.
¿Es posible?
ACTUALIZACIÓN: Aquí hay un pequeño fragmento de código.
public static boolean isTimeToParty(DayOfWeek day) { boolean isParty = switch (day) { case MONDAY -> false; case TUESDAY -> { yield false; //return not allowed } case WEDNESDAY -> false; case THURSDAY -> false; case FRIDAY -> false; case SATURDAY -> true; case SUNDAY -> true; }; return isParty; }Lo que quiero decir es: ¿Cómo evitar asignar valor a una variable y luego llamar a return [variable_name]? Me gustaría devolver el valor y salir del interruptor al mismo tiempo.
Gracias por adelantado
Simplemente return al método de llamada. Si solo desea dejar de procesar más casos en el mismo interruptor, use break . Este y el siguiente ejemplo se aplican a la declaración de cambio, mientras que la pregunta original estaba relacionada con la expresión de cambio.
public static void main(String[] args) throws Exception { switch(1) { case 1: System.out.println("Case one"); // no break, so case processing goes one case 2: System.out.println("Case two"); break; // we bail out here and do not process further cases default: System.out.println("Default case"); } switch(2) { case 2: return; default: System.out.println("Default case"); } System.out.println("This is the end - should not be printed"); }genera salida
Case one Case twoComo no puede usar return o break dentro del interruptor, sería más fácil en su caso simplificar con return switch ... directamente:
public static boolean isTimeToParty(DayOfWeek day) { return switch (day) { case SATURDAY, SUNDAY -> true; default -> false; }; }