2010-07-16 2 views
8

파이썬에서는 eval()을 사용하여 프로그램에서 사용자가 입력 한 코드를 실행할 수 있습니다. Groovy에서 할 수있는 비슷한 점이 있습니까? 사용자가 원하는 코드를 입력 할 수있는 SWING UI 텍스트 상자를 갖고 싶습니다.Groovy에서 eval()과 같습니다.

감사합니다, 하리

답변

2

이 (그러나 어떤 스크립트 언어의 평가와 평소와 같이 악성 코드 exeution에주의) 시도 :

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

를 참조 내 사용자 정의 문법에 코드의 작은 조각을 실행하려고 - 확실히 악성 코드를 확인합니다 . – Hari

4

을 할 것

http://groovy.codehaus.org/api/groovy/util/Eval.html

같은 것을 수행)는 평가 클래스를 사용하는 아마 예, Groovy에서 Eval.x, Eval.xy, Eval.xyz 또는 Eval.me를 사용하여 동적으로 코드를 평가할 수 있습니다. 이러한 방법에 대한 자세한 내용은 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"')를 확실히 의미합니까? ;-) –

+0

좋은 캐치, 고마워. Eval.x에서 Eval.me로 변경되었습니다. Eval.xy 대 Eval.x의 사용에 대해 - 선호도의 문제입니다. 이 경우 둘 중 하나를 사용할 수 있습니다. 또한 '또는' ''을 사용할 수 있습니다. –

관련 문제