Groovy Eval,为什么这不起作用?

时间:2011-08-14 16:30:02

标签: groovy

我有这个简单的代码

def values = [foo:5, bar:6]  

def result = Eval.me("p", values, "${p.foo}+${p.bar}")

为什么它不起作用?

我得到了:

groovy.lang.MissingPropertyException: No such property: p for class: ConsoleScript7

感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

Groovy表达式中的字符串不包含双引号,因此Groovy不会将它们视为具有表达式支持的GString。在表达式周围添加转义双引号并转义$将为您提供有效的结果。

Eval.me("p", values, "\"\${p.foo}\"+\"\${p.bar}\"")

此外,您可以执行以下操作之一,具体取决于您是否要输出String或整数值:

Eval.me("p", values, "p.foo.toString()+p.bar.toString()")

Eval.me("p", values, "p.foo+p.bar")