Эквивалент eval () в Groovy - PullRequest
       4

Эквивалент eval () в Groovy

9 голосов
/ 16 июля 2010

В python я могу использовать eval () для выполнения введенного пользователем кода в моей программе.Есть ли что-нибудь подобное, что я могу сделать в Groovy?Я хочу иметь текстовое поле SWING UI, где пользователь вводит фрагмент кода, который я хочу выполнить?

Спасибо, Хари

Ответы [ 3 ]

9 голосов
/ 16 июля 2010

Существует несколько способов запуска Groovy (как из Java, так и из Groovy):

http://groovy -lang.org / integrating.html

Самый быстрыйОднако метод (для простых сценариев), вероятно, должен использовать класс Eval:

http://groovy -lang.org / integrating.html # integra-eval

Какойпозволит вам сделать что-то вроде:

Eval.me( '2 + 2' )

См. эту страницу из других примеров:

http://mrhaki.blogspot.com/2009/11/groovy-goodness-simple-evaluation-of.html

4 голосов
/ 16 июля 2010

Да, можно динамически оценивать код в Groovy, используя Eval.x, Eval.xy, Eval.xyz или Eval.me.См. API doc для получения более подробной информации об этих методах.

Например, вы используете Eval.me так:

def a = "hello"
def b = "world" 
Eval.me(""" println "$a $b" """)
--> hello world

Также см. thisсообщение в блоге для некоторых примеров eval

2 голосов
/ 16 июля 2010

Попробуйте это (но, как обычно, с eval на любом языке сценариев, будьте осторожны с выполнением вредоносного кода):

evaluate("print new Date()")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...