groovy - 在 Groovy Shell 执行期间发出局部变量值
问题描述
考虑我们有以下 Groovy 脚本:
temp = a + b
temp * 10
现在,假设a
和b
使用它们各自的值绑定到上下文,并且脚本是使用 groovy shell 脚本执行的。
有没有一种方法可以获得temp
变量赋值的值,而无需将值打印/记录到控制台?例如,给定a=2
and b=3
,我不仅想知道脚本返回了50
,还想知道temp=5
. 有没有办法拦截每个分配以捕获值?
任何建议或替代方案表示赞赏。提前致谢!
解决方案
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
推荐阅读
- html - pdf文件无法从网页下载
- flutter - 颤振安装
- python - 为什么`filter`适用于一个列表而不适用于其他给出“具有多个元素的数组的真值是不明确的。”?
- list - 迁移时忽略列表项
- python-3.x - 从另一个项目导入模型
- python - 使用 Flask 在 Web 上提供 Windows CLI 脚本:如何实时更新输出?以及如何链接输入?
- angular - Firefox 中的角度元素“this.ngElementStrategy 未定义”
- java - 如何从 GitHub 发布 Android 库?
- php - Visual Studio Code - PHPCS 扩展 - 权限被拒绝
- python - 合并两个数据框(都具有多索引)