问题
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
回答1:
In the groovy.lang.Script there is a method public Binding getBinding()
. See also groovy.lang.Binding with method public boolean hasVariable(String name)
.
Thus you can simple check variable existence like
if (binding.hasVariable('superVariable')) {
// your code here
}
回答2:
// Example usage: defaultIfInexistent({myVar}, "default")
def defaultIfInexistent(varNameExpr, defaultValue) {
try {
varNameExpr()
} catch (exc) {
defaultValue
}
}
回答3:
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"]) ...
来源:https://stackoverflow.com/questions/42465028/how-can-i-determine-if-a-variable-exists-from-within-the-groovy-code-running-in