gpt4 book ai didi

java - 避免为每条记录重新初始化 groovy shell

转载 作者:行者123 更新时间:2023-12-02 08:46:19 26 4
gpt4 key购买 nike

我正在尝试实现以下代码:-

        for(int i = 0; i < records.length; i++){
Binding binding=new Binding();
binding.setVariable("val1",records[i][0]);
binding.setVariable("val2",records[i][1]);
binding.setVariable("val3",records[i][2]);
GroovyShell shell=new GroovyShell(binding);
Object value = shell.evaluate(code);
System.out.println(value.toString());
};

我不想为每条记录一次又一次地创建 GroovyShell,但我看不到其他选项。据我所知,我无法为同一个 groovy shell 提供新的绑定(bind),因为只能在创建 shell 时提供绑定(bind),而不能在创建 shell 之后提供。

我尝试在创建 groovy shell 后更改绑定(bind)对象,但它给了我一个错误。

我是否有其他方法可以为每条记录一次又一次地重新初始化 groovy shell?我只想将变量 record[i][0],record[i][1],record[i][2] 传递给 shell。

最佳答案

使用GroovyShell.parse(code)

Script script = new GroovyShell().parse(code);

for(int i = 0; i < records.length; i++){
Binding binding=new Binding();
binding.setVariable("val1",records[i][0]);
binding.setVariable("val2",records[i][1]);
binding.setVariable("val3",records[i][2]);
script.setBinding(binding);
Object value = script.run();
System.out.println(value.toString());
};

关于java - 避免为每条记录重新初始化 groovy shell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61059526/

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