在Groovy中评估赋值表达式

SiK*_*ing 2 groovy

我有一个表达如下:

def expr = 'anything="something"'
Run Code Online (Sandbox Code Playgroud)

在我的情况下,上面的字符串来自Web服务,但它可以来自任何地方.我想对此进行评估,以便最终得到值为"something"的变量"anything",这样:

assert anything=="something"
Run Code Online (Sandbox Code Playgroud)

到目前为止我试过:

def anything
Eval.me(expr)    // `anything` ends up null
Run Code Online (Sandbox Code Playgroud)

从我在SO上阅读的内容:

def anything
Eval.me(expr.inspect())    // same thing: `anything` ends up null
Run Code Online (Sandbox Code Playgroud)

还尝试过:

def anything
expr.execute()    // complains: "Executable name has embedded quote, split the arguments"
Run Code Online (Sandbox Code Playgroud)

可以这样做吗?

Paw*_*cyk 5

您可以使用GroovyShell,看看:

def expr = 'anything = "something"'

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

assert binding.getVariable('anything') == "something"
Run Code Online (Sandbox Code Playgroud)