我正在研究开关表达式,我想知道如何将控制传递给调用程序方法,因为"产量;只是从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]?我想同时返回值和退出开关。
提前感谢
由于您不能在交换机中使用return
或break
,因此在您的情况下,直接使用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