2010-07-16 138 views
8

在python中,我可以使用eval()在我的程序中執行用戶輸入的代碼。 Groovy中有什麼類似的東西嗎?我想要一個SWING UI文本框,用戶輸入我想要執行的一段代碼?Groovy中的eval()的等效代碼

感謝, 哈日

回答

2

試試這個(但在任何腳本語言的eval像往常一樣約惡意代碼exeution小心):

evaluate("print new Date()") 
+0

我想在我的自定義語法運行一小段代碼 - 一定會檢查是否有惡意代碼。 – Hari 2010-07-16 11:04:16

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

你的意思是'Eval.xy(a,b,'println'$ x $ y'')'當然? ;-) – 2010-07-16 11:03:15

+0

很好,趕快,謝謝。從Eval.x更改爲Eval.me.關於使用Eval.xy vs Eval.x - 這是一個偏好問題。在這種情況下,您可以使用其中任何一種。另外,您可以使用'或'「」。 – 2010-07-16 11:11:22