如何退出 switch 表达式中的方法?
How exit from method in a switch expression?
我正在研究 switch 表达式,我想知道如何将控制传递给调用程序方法,因为“yield”只是从 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值和退出开关同时
提前致谢
只需return
调用方法即可。如果您只是想停止处理同一个开关中的更多情况,请使用 break
。
此示例和以下示例适用于开关 statement,而原始问题与开关 expression.
有关
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
由于您不能在开关中使用 return
或 break
,因此在您的情况下直接使用 return switch ...
会更容易简化:
public static boolean isTimeToParty(DayOfWeek day) {
return switch (day) {
case SATURDAY, SUNDAY -> true;
default -> false;
};
}
我正在研究 switch 表达式,我想知道如何将控制传递给调用程序方法,因为“yield”只是从 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值和退出开关同时
提前致谢
只需return
调用方法即可。如果您只是想停止处理同一个开关中的更多情况,请使用 break
。
此示例和以下示例适用于开关 statement,而原始问题与开关 expression.
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
由于您不能在开关中使用 return
或 break
,因此在您的情况下直接使用 return switch ...
会更容易简化:
public static boolean isTimeToParty(DayOfWeek day) {
return switch (day) {
case SATURDAY, SUNDAY -> true;
default -> false;
};
}