如何退出 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

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

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