В python я могу использовать eval () для выполнения введенного пользователем кода в моей программе.Есть ли что-нибудь подобное, что я могу сделать в Groovy?Я хочу иметь текстовое поле SWING UI, где пользователь вводит фрагмент кода, который я хочу выполнить?
Спасибо, Хари
Существует несколько способов запуска 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
Да, можно динамически оценивать код в 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
Попробуйте это (но, как обычно, с eval на любом языке сценариев, будьте осторожны с выполнением вредоносного кода):
evaluate("print new Date()")