switch 语句的 Groovy 行为

问题描述 投票:0回答:1

我还没有在 Groovy 中使用太多枚举,但是下面的代码并不像我期望的那样运行:

enum Enum{ A, B }

def e = Enum.A

switch(e) {
    case Enum.A:
        println("A: ${Enum.A.isCase(e)}")
    case Enum.B:
        println("B: ${Enum.B.isCase(e)}")
}

这打印

A: true
B: false

我是在误用 enum 还是为什么在 switch 语句中执行了 Enum.B case?

编辑

谢谢解答!我编辑了这个问题,因为它与枚举无关。这只是我不了解 switch 语句。该行为与 Java switch 一致,我不知道也执行了不匹配的案例:

匹配的case标签之后的所有语句依次执行,不管后面case标签的表达式如何,直到遇到break语句为止

我想我必须在工作中检查一些代码......

groovy switch-statement
1个回答
2
投票

您需要在最后的每个

break
部分语句中使用
case
语句。这是为了确保在执行相关语句集后立即退出循环。查看更多在这里

所以你的 switch 语句应该是这样的:

switch(e) {
    case Enum.A:
        println("A: ${Enum.A.isCase(e)}")
        break
    case Enum.B:
        println("B: ${Enum.B.isCase(e)}")
        break // optional

}
© www.soinside.com 2019 - 2024. All rights reserved.