在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('=')
,从第二个值中删除引号,然后自己进行赋值。