带有值列表的Groovy Switch语句

带有值列表的Groovy Switch语句,groovy,jenkins-pipeline,Groovy,Jenkins Pipeline,我想在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 defau

我想在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_分支
等于:

  • develop
    -返回值为
    dev
    -正常
  • master
    -返回值为
    list
    -正常
  • support/1.2
    -返回值为
    sup
    -为什么不
    列表

我猜
GIT_分支的类型是
字符串
,而
“support/${version}”
GString
。如果将后者转换为
字符串
,它应该可以工作:

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}"

这两种字符串类型之间的差异在相互比较时并不重要,但对其他类型的比较也很重要,例如,在您的代码中,您将
GString
列表的元素进行隐式比较,因此您的问题本质上是“如果多个
大小写
s匹配,Groovy
开关的行为是什么?”?我想将多个大小写匹配与字符串值和变量混合使用。在我的代码中,变量仅在单大小写匹配中工作,这对我来说不是一个好的解决方案。