在python中,我可以使用eval()在我的程序中執行用戶輸入的代碼。 Groovy中有什麼類似的東西嗎?我想要一個SWING UI文本框,用戶輸入我想要執行的一段代碼?Groovy中的eval()的等效代碼
感謝, 哈日
在python中,我可以使用eval()在我的程序中執行用戶輸入的代碼。 Groovy中有什麼類似的東西嗎?我想要一個SWING UI文本框,用戶輸入我想要執行的一段代碼?Groovy中的eval()的等效代碼
感謝, 哈日
試試這個(但在任何腳本語言的eval像往常一樣約惡意代碼exeution小心):
evaluate("print new Date()")
有運行的Groovy(來自內外的多種方式Java和Groovy):
http://groovy.codehaus.org/Embedding+Groovy
的最快方法,但(爲簡單的腳本),可能是使用Eval類:
http://groovy.codehaus.org/api/groovy/util/Eval.html
這將讓你做這樣的事情:
Eval.me('2 + 2')
從以上的例子看到這個頁面:
http://mrhaki.blogspot.com/2009/11/groovy-goodness-simple-evaluation-of.html
謝謝你會嘗試! – Hari 2010-07-16 11:03:21
是的,可以通過使用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
你的意思是'Eval.xy(a,b,'println'$ x $ y'')'當然? ;-) – 2010-07-16 11:03:15
很好,趕快,謝謝。從Eval.x更改爲Eval.me.關於使用Eval.xy vs Eval.x - 這是一個偏好問題。在這種情況下,您可以使用其中任何一種。另外,您可以使用'或'「」。 – 2010-07-16 11:11:22
我想在我的自定義語法運行一小段代碼 - 一定會檢查是否有惡意代碼。 – Hari 2010-07-16 11:04:16