Как избежать повторной инициализации оболочки groovy для каждой записи - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь реализовать следующий код: -

        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, поскольку привязка может быть обеспечена только при создании оболочки, а не после нее.

Я пытался изменить объект привязки после создания оболочки groovy, но он выдает ошибку.

Есть ли у меня альтернатива повторной инициализации оболочки groovy снова и снова для каждого запись? Я просто хочу передать переменные запись [i] [0], запись [i] [1], запись [i] [2] в оболочку.

1 Ответ

1 голос
/ 06 апреля 2020

использовать GroovyShell.parse (код)

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());
};
...