我有一个表达如下:
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)
可以这样做吗?
您可以使用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)