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
等于:
develop
- 返回值为 dev
- OK
master
- 返回值为 list
- OK
support/1.2
- 返回值是 sup
- 为什么不是 list
?
我的猜测是 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}"
两种字符串类型之间的差异在相互比较时并不重要,但对于其他类型的比较可能很重要,例如在您的代码中,您隐式地将 GString
与 List
.
的元素进行比较
我想在 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
等于:
develop
- 返回值为dev
- OKmaster
- 返回值为list
- OKsupport/1.2
- 返回值是sup
- 为什么不是list
?
我的猜测是 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}"
两种字符串类型之间的差异在相互比较时并不重要,但对于其他类型的比较可能很重要,例如在您的代码中,您隐式地将 GString
与 List
.