Можете ли вы передать переменные в оценку Groovy (файл файла)? - PullRequest
0 голосов
/ 28 марта 2020

Можно ли передать переменные области в оценку Groovy (файл файла)? И поэтому для доступа к переменной a в файле OtherScript. groovy указанному ниже?

FirstScript. groovy:

a = 4
evaluate(new File('OtherScript.groovy'))
println 'I can see b = ${b}'

OtherScript. groovy:

b = 2 * a

При выполнении этого примера возникает следующее исключение: groovy.lang.MissingPropertyException: No such property: a for class: OtherScript

Ответы [ 2 ]

0 голосов
/ 28 марта 2020

ваши сценарии в порядке, кроме одного:

строка с println должна быть заключена в двойные кавычки для интерполяции выражений

, поэтому, если у вас есть

FirstScript . groovy

a = 4
evaluate(new File('OtherScript.groovy'))
println "I can see b = ${b}"

OtherScript. groovy

b = 2 * a

, тогда работает следующая командная строка:

groovy FirstScript.groovy

и отпечатки:

I can see b = 8
0 голосов
/ 28 марта 2020

Я полагаю, что вы можете использовать какую-то Bean Scripting Framework (BSF), которая поддерживается Groovy, Groovy реализует BSF в org.codehaus.groovy.bsf.GroovyEngine, вот быстрый пример использования BSFManager

@Grab('org.apache.bsf:bsf-api:3.1')

import org.apache.bsf.BSFManager

BSFManager manager = new BSFManager()
manager.declareBean("xyz", 4, Integer.class)
Object answer = manager.eval("groovy", "test.groovy", 0, 0, "xyz + 1")
assert 5 == answer

Пример из groovy do c. Этот ответ использует GroovyShell, что является другим возможным решением для вашего примера.

код, протестированный с Groovy v2.5.1. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...