在Groovy中等效于eval()

时间:2010-07-16 10:43:20

标签: groovy

在python中,我可以使用eval()在我的程序中执行用户输入的代码。 在Groovy中我能做些类似的事吗?我想要一个SWING UI文本框,用户输入一段我想要执行的代码?

谢谢, 哈

3 个答案:

答案 0 :(得分:9)

运行Groovy有多种方式(来自Java和Groovy):

http://groovy-lang.org/integrating.html

然而,对于简单的脚本,最快的方法可能是使用Eval类:

http://groovy-lang.org/integrating.html#integ-eval

这会让你做类似的事情:

Eval.me( '2 + 2' )

从更多示例中查看此页面:

http://mrhaki.blogspot.com/2009/11/groovy-goodness-simple-evaluation-of.html

答案 1 :(得分:4)

是的,可以使用Eval.x,Eval.xy,Eval.xyz或Eval.me动态评估Groovy中的代码。有关这些方法的详细信息,请参阅the API doc

例如,您可以像这样使用Eval.me:

def a = "hello"
def b = "world" 
Eval.me(""" println "$a $b" """)
--> hello world

另请参阅this blog post for some eval examples

答案 2 :(得分:2)

试试这个(但与任何脚本语言中的eval一样,小心恶意代码的使用):

evaluate("print new Date()")