gpt4 book ai didi

binding - 如何使用 GroovyShell 列出所有绑定(bind)变量

转载 作者:行者123 更新时间:2023-12-03 10:37:03 25 4
gpt4 key购买 nike

我对 Groovy 很陌生。如何列出我传递给 Binding 构造函数的所有变量?

考虑到我有以下几点:

@Test
public void test() {

List<String> outputNames = Arrays.asList("returnValue", "ce");

String script = getScript();
Script compiledScript = compileScript(script);
CustomError ce = new CustomError("shit", Arrays.asList(new Long(1)));

Map<String, Object> inputObjects = new HashMap<String, Object>();
inputObjects.put("input", "Hovada");
inputObjects.put("error", ce);

Binding binding = new Binding(inputObjects);
compiledScript.setBinding(binding);
compiledScript.run();

for (String outputName : outputNames) {
System.out.format("outputName : %s = %s", outputName, binding.getVariable(outputName));
}
}

private Script compileScript(String script) {
GroovyShell groovyShell = new GroovyShell();
Script compiledScript = groovyShell.parse(script);
return compiledScript;
}

如何遍历 groovy.script 中的所有变量(通过 hashMap)?

最佳答案

Script compiledScript表示脚本,如果你查看它的源代码,你会发现它有属性绑定(bind)和getter+setter,并且Binding 有一个变量“变量”。所以你去:

binding.variables.each{ 
println it.key
println it.value
}

对于 Map<String, String> ...

您还可以像这样设置属性:
Binding binding = new Binding(inputObjects);
compiledScript.setBinding(binding);
compiledScript.setProperty("prop", "value");
compiledScript.run();

并将其存储到 Binding 变量中。

关于binding - 如何使用 GroovyShell 列出所有绑定(bind)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7421993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com