首页 > 解决方案 > 在 Groovy Shell 执行期间发出局部变量值

问题描述

考虑我们有以下 Groovy 脚本:

temp = a + b
temp * 10

现在,假设ab使用它们各自的值绑定到上下文,并且脚本是使用 groovy shell 脚本执行的。

有没有一种方法可以获得temp变量赋值的值,而无需将值打印/记录到控制台?例如,给定a=2and b=3,我不仅想知道脚本返回了50,还想知道temp=5. 有没有办法拦截每个分配以捕获值?

任何建议或替代方案表示赞赏。提前致谢!

标签: groovygroovyshell

解决方案


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

推荐阅读