1

我正在研究 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]?我想同时返回值和退出开关。

提前致谢

4

2 回答 2

2

简单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
于 2021-11-14T22:34:50.910 回答
1

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

public static boolean isTimeToParty(DayOfWeek day) {
    return switch (day) {
        case SATURDAY, SUNDAY -> true;
        default  -> false;
    };
}
于 2021-11-15T10:51:28.117 回答