Groovy表达式求值
一个基本的常规问题。为了使代码健壮,我需要使用groovy提供的Eval.me(String) 但我有一个问题,当我尝试进行字符串比较时会出现这个问题Groovy表达式求值,groovy,Groovy,一个基本的常规问题。为了使代码健壮,我需要使用groovy提供的Eval.me(String) 但我有一个问题,当我尝试进行字符串比较时会出现这个问题 def x='yay' def y='yay' def groovyString="'$x' == '$y'" println Eval.me(groovyString); 这是真的 但是下面的代码只是说“yay”不是一个变量定义 def x='yay' def y='yay' def groovyString="$x == $y" prin
def x='yay'
def y='yay'
def groovyString="'$x' == '$y'"
println Eval.me(groovyString);
这是真的
但是下面的代码只是说“yay”不是一个变量定义
def x='yay'
def y='yay'
def groovyString="$x == $y"
println Eval.me(groovyString);
我知道为什么会出现这个错误:)有没有一种方法可以避免这个问题,而实际上不需要为字符串比较添加'
附言:我需要它不仅适用于字符串,还可以正常工作。因此,您应该能够使用
绑定和GroovyShell
如果我们使用绑定创建GroovyShell实例,该绑定在未找到属性时默认返回属性名称:
def shell = new GroovyShell( new Binding( [:].withDefault{ it } ) )
然后,我们可以评估您的groovyString:
shell.evaluate( groovyString )
它的计算结果基本上是第一种形式,因为两个yay
属性都解析为字符串yay
,显然,如果需要传递参数,那么可以更改[:]。例如,groovyString='a==13'
将起作用。。。祝你好运