Groovy 带有值列表的 Switch 语句

Groovy Switch statement with list of values

我想在 Jenkins 管道作业中使用 Switch 语句。

def version = "1.2"
switch(GIT_BRANCH) {
  case "develop":
    result = "dev"
    break
  case ["master", "support/${version}"]:
    result = "list"
    break
  case "support/${version}":
    result = "sup"
    break
  default:
    result = "def"
    break
}
echo "${result}"

GIT_BRANCH等于:

我的猜测是 GIT_BRANCH 的类型是 String"support/${version}"GString。如果将后者转换为 String 它应该可以工作:

def version = "1.2"
switch(GIT_BRANCH) {
  case "develop":
    result = "dev"
    break
  case ["master", "support/${version}".toString()]:
    result = "list"
    break
  case "support/${version}":
    result = "sup"
    break
  default:
    result = "def"
    break
}
echo "${result}"

两种字符串类型之间的差异在相互比较时并不重要,但对于其他类型的比较可能很重要,例如在您的代码中,您隐式地将 GStringList.

的元素进行比较