39. Java 控制流语句 Yield语句

126 阅读2分钟

39. Java 控制流语句 Yield语句

🚀 yield 语句介绍

Java 12 中,我们迎来了一个非常实用的语法糖——yield 语句!它使得我们在使用 switch 表达式时能够轻松返回值,尤其在 switchcase 块中涉及复杂计算时非常有用。🎯

yield 语句的基本用法

你可以把 yield 想象成一种“终结”语句,它帮助你从 switch 表达式中返回一个值。简单来说,yield 就是你告诉程序:“这个 case 完成了,这就是我要返回的结果”

switch (expression) {
    case value1 -> value1Result;
    case value2 -> value2Result;
    default -> {
        // 可以做更复杂的操作
        yield finalResult;  // 这里就是返回值的地方
    }
}

📊 示例:计算剩余工作天数

让我们通过一个实际的例子来看看 yield 是怎么帮助我们更清晰地处理 switch 语句的。

假设我们要计算从当前周几到周五还剩多少个工作日,周六和周日当然是不用工作的啦!😎

class Test {
    enum Day {
        MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
    }

    public int calculate(Day d) {
        return switch (d) {
            case SATURDAY, SUNDAY -> 0; // 如果是周末,剩余工作天数为0
            default -> {
                int remainingWorkDays = 5 - d.ordinal();  // 计算剩余工作天数
                yield remainingWorkDays;  // 返回剩余工作天数
            }
        };
    }
}

💻 程序输出

Test t = new Test();
System.out.println(t.calculate(Day.MONDAY));  // 输出 4
System.out.println(t.calculate(Day.SUNDAY));  // 输出 0
解释:
  • MONDAY:从周一到周五还有 4 个工作日,所以输出 4
  • SUNDAY:周日是休息日,所以输出 0

🔑 主要要点:

  • yield 是用于 switch 表达式中的,帮助返回一个值。
  • switch 表达式 使得 switch 不仅仅是一个控制流工具,它现在还能返回一个值。
  • switchcasedefault 块中,使用 yield 可以执行更复杂的计算并返回最终结果。

总结:

  • yield 是 Java 12 新特性,它让你在 switch 表达式中轻松返回一个值,特别适用于处理复杂的计算。
  • 与传统的 switch 语句相比,yield 提供了更简洁、更直观的控制流程,特别是在涉及多个分支逻辑时,它让代码更具可读性和可维护性。

使用 yield,你的 switch 语句将变得更强大、灵活,就像给你的代码加了一对翅膀!🦸‍♂️