2014-09-17 4 views
2

에 할당 식을 평가 : 내 경우 위의 문자열을 웹 서비스에서 제공에서내가 같은 표현이 그루비

def expr = 'anything="something"' 

, 그러나 그것은 어디서든 할 수있다.

assert anything=="something" 

는 지금까지 시도 :

def anything 
Eval.me(expr) // `anything` ends up null 

물건에서 나는 그런 것을 "무언가"의 값이 변수 "아무것도"로 끝날 수 있도록 나는 이것을 평가하고 싶습니다 나는 그렇게 읽어 : 또한 시도

def anything 
Eval.me(expr.inspect()) // same thing: `anything` ends up null 

:

def anything 
expr.execute() // complains: "Executable name has embedded quote, split the arguments" 

이 작업을 수행 할 수 있습니까?

답변

5

당신은 좀 봐, GroovyShell를 사용할 수 있습니다

def expr = 'anything = "something"' 

def binding = new Binding() 
def groovyShell = new GroovyShell(binding) 
groovyShell.evaluate(expr) 

assert binding.getVariable('anything') == "something" 
+0

내가 약간 개선'binding.getVariable 사용하여 (expr.split를 ('=') [0])'. 매력처럼 작동합니다! – SiKing

+0

Nice, 도움이 되었기 때문에 기쁩니다 :) –

+1

해당 웹 서비스에서 반환 될 수있는 코드를 맹목적으로 실행하고 있음을 기억하십시오. 나는 그 일에 매우 조심 스러울 것이다. 만약 당신이 그 서비스에서 문자열을 얻으면, 나는 단순한'.split ('=')'을 사용하고, 두 번째 값에서 따옴표를 제거하고, 할당을 직접한다. – Tobia