如何否定 groovy 中的变量

How to negate a variable in groovy

我正在尝试使用 groovy 脚本来否定变量,但使用 (!) 它似乎不起作用,变量是从 jenkins 控件传递的 运行 a groovy 构建流程:

def P = "arg"
def resolver = build.buildVariableResolver
def V = resolver.resolve(P)
 print "V is " + V
 print "negated V is " + !V

在两张图片中我得到了相同的值!!

使用 Java 的 Boolean.valueOf() 或 Groovy 的 String.toBoolean() 从字符串中获取适当的布尔值,即 truefalse.

def mybool = "false"
def v = Boolean.valueOf(mybool)
println "v=" + v
// => v=false
println "!v=" + !v
// => !v=true

String.toBoolean() 更灵活,允许范围更广的 "truthy" 个字符串(truey1,全部修剪和忽略大小写)。

def b = "False"
def v = b.toBoolean()
println "v=" + v
// => v=false
println "!v=" + !v
// => !v=true

虽然这些是解决问题的方法,但由于隐式转换,原始代码的行为与原来的一样。 !"false"false(布尔值),因为 "false" 是 groovy 标准 true(非空字符串)。