如何退出开关表达式中的方法



我正在研究开关表达式,我想知道如何将控制传递给调用程序方法,因为"产量;只是从switch表达式中退出。我找不到任何方法让它表现得像经典的switch语句。

这可能吗?

更新:这里有一小段代码。

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;
}

我的意思是:如何避免给变量赋值,然后调用return[variable_name]?我想同时返回值和退出开关。

提前感谢

由于您不能在交换机中使用returnbreak,因此在您的情况下,直接使用return switch ...会更容易简化:

public static boolean isTimeToParty(DayOfWeek day) {
return switch (day) {
case SATURDAY, SUNDAY -> true;
default  -> false;
};
}

只需return到调用方法。如果您只想停止在同一交换机中处理更多的案例,请使用break。这个和下面的例子适用于switch语句,而原来的问题则与switch表达式相关。

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");
}

生成输出

Case one
Case two

最新更新