Как определить, существует ли переменная из кода Groovy, запущенного в Scripting Engine?

Как определить, существует ли переменная из кода Groovy, запущенного в Scripting Engine?

Переменная была помещена метод ScriptEngine put

Ответ 1

В groovy.lang.Script существует метод public Binding getBinding(). См. Также groovy.lang.Binding с помощью метода public boolean hasVariable(String name).

Таким образом, вы можете просто проверить существование переменной, например

if (binding.hasVariable('superVariable')) {
// your code here
}

Ответ 2

Переменные, вводимые механизмом Scripting Engine, хранятся в пределах binding.variables, так что вы можете, например, проверьте переменную с именем xx:

if (binding.variables["xx"]) ...

Ответ 3

// Example usage: defaultIfInexistent({myVar}, "default")
def defaultIfInexistent(varNameExpr, defaultValue) {
    try {
        varNameExpr()
    } catch (exc) {
        defaultValue
    }
}