Выдавать значения локальных переменных при выполнении Groovy Shell - PullRequest
0 голосов
/ 28 сентября 2018

Предположим, что у нас есть следующий скрипт Groovy:

temp = a + b
temp * 10

Теперь, учитывая, что a и b связаны с контекстом с их соответствующими значениями, и что скрипт выполняется с использованиемgroovy shell script.

Есть ли способ получить значение присвоения переменной temp, не печатая и не записывая значение в консоль?Например, учитывая a=2 и b=3, я хотел бы знать не только, что скрипт вернул 50, но и что temp=5.Есть ли способ перехватить каждое назначение, чтобы захватить значения?

Любые предложения или альтернативы приветствуются.Заранее спасибо!

1 Ответ

0 голосов
/ 28 сентября 2018

Вы можете получить все привязки и назначения из скрипта, передав экземпляр Binding объекту GroovyShell.Рассмотрим следующий пример:

def binding = new Binding()
def shell = new GroovyShell(binding)

def script = '''
a = 2
b = 3
temp = a + b
temp * 10
'''

println shell.run(script, 'script.groovy', [])

println binding.variables

Запуск этого скрипта выводит на консоль следующие две строки:

50
[args:[], a:2, b:3, temp:5]

Если вы хотите получить доступ к значению переменной скрипта temp, вы просто делаете:

binding.variables.temp
...