How can I determine if a variable exists from within the Groovy code running in the Scripting Engine?
The variable was put by ScriptEngine's put method
How can I determine if a variable exists from within the Groovy code running in the Scripting Engine?
The variable was put by ScriptEngine's put method
In a groovy.lang.Script there is a method public Binding getBinding()
. And groovy.lang.Binding has method public boolean hasVariable(String name)
.
Thus you can simply check variable existence like:
if (binding.hasVariable('superVariable')) {
// your code here
}
// Example usage: defaultIfInexistent({myVar}, "default")
def defaultIfInexistent(varNameExpr, defaultValue) {
try {
varNameExpr()
} catch (exc) {
defaultValue
}
}
Variables injected by the Scripting Engine are held within
binding.variables
, so you can e.g. check for variable named xx
:
if (binding.variables["xx"]) ...
Improvement for the existing solution given here https://stackoverflow.com/a/56306660/3158217 -
def defaultIfInexistent(varName, defaultValue){
try{
varName.toString()
return varName
}catch(ex){
return defaultValue
}
}