在Groovy中等效于eval()

Har*_*ari 9 groovy

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

谢谢,哈里

tim*_*tes 9

有多种方法可以运行Groovy(来自Java和Groovy):

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

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

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

哪个会让你做类似的事情:

Eval.me( '2 + 2' )
Run Code Online (Sandbox Code Playgroud)

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

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


Kai*_*nad 5

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

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

def a = "hello"
def b = "world" 
Eval.me(""" println "$a $b" """)
--> hello world
Run Code Online (Sandbox Code Playgroud)

另外,请参阅此博客文章以获取一些评估示例

  • 你的意思是`Eval.xy( a, b, 'println "$x $y"' )` 确定吗?;-) (3认同)