在Groovy中计算赋值表达式

在Groovy中计算赋值表达式,groovy,Groovy,我有一个表达方式,比如: def expr = 'anything="something"' 在我的例子中,上面的字符串来自web服务,但它可以来自任何地方。我想对其进行评估,以得到值为“something”的变量“anywhere”,例如: assert anything=="something" 到目前为止,我试过: def anything Eval.me(expr) // `anything` ends up null 从我读到的东西来看,所以: def anything E

我有一个表达方式,比如:

def expr = 'anything="something"'
在我的例子中,上面的字符串来自web服务,但它可以来自任何地方。我想对其进行评估,以得到值为“something”的变量“anywhere”,例如:

assert anything=="something"
到目前为止,我试过:

def anything
Eval.me(expr)    // `anything` ends up null
从我读到的东西来看,所以:

def anything
Eval.me(expr.inspect())    // same thing: `anything` ends up null
还尝试:

def anything
expr.execute()    // complains: "Executable name has embedded quote, split the arguments"
可以这样做吗?

您可以使用,看看:

def expr = 'anything = "something"'

def binding = new Binding()
def groovyShell = new GroovyShell(binding)
groovyShell.evaluate(expr)

assert binding.getVariable('anything') == "something"

我通过使用
binding.getVariable(expr.split('=')[0])
稍微改进了它。工作起来很有魅力!很好,我很高兴它有帮助:)请记住,您正在盲目地执行任何可以从该web服务返回的代码。我会非常小心的。如果您只从该服务获取字符串,我将使用一个简单的
.split('=')
,从第二个值中删除引号,然后自己进行赋值。