在Python中,我可以使用eval()来执行用户在程序中输入的代码。 在Groovy中是否有类似的功能?我想要一个SWING UI文本框,让用户输入一段我想要执行的代码?
谢谢, Hari
在Python中,我可以使用eval()来执行用户在程序中输入的代码。 在Groovy中是否有类似的功能?我想要一个SWING UI文本框,让用户输入一段我想要执行的代码?
谢谢, Hari
有多种方式可以运行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
是的,使用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
尝试这个(但与任何脚本语言中的eval一样,要小心恶意代码执行):
evaluate("print new Date()")
Eval.xy(a, b, 'println "$x $y"')
对吧?;-) - tim_yatesEval.me
的字符串中对$a
和$b
进行了求值,它们并没有被Eval.me
求值... 我认为这不是本意? - GaspardP