带有枚举的 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?

groovy enums switch-statement
1个回答
0
投票

您需要在最后的每个

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.