Groovy表达式求值

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

一个基本的常规问题。为了使代码健壮,我需要使用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"
println Eval.me(groovyString);
我知道为什么会出现这个错误:)有没有一种方法可以避免这个问题,而实际上不需要为字符串比较添加
'


附言:我需要它不仅适用于字符串,还可以正常工作。因此,您应该能够使用
绑定
GroovyShell

如果我们使用绑定创建GroovyShell实例,该绑定在未找到属性时默认返回属性名称:

def shell = new GroovyShell( new Binding( [:].withDefault{ it } ) )
然后,我们可以评估您的groovyString:

shell.evaluate( groovyString )

它的计算结果基本上是第一种形式,因为两个
yay
属性都解析为字符串
yay

,显然,如果需要传递参数,那么可以更改
[:]。例如,
groovyString='a==13'
将起作用。。。祝你好运