C'est du sucre syntaxique pour les scripts de base. En omettant le "def" mot-clé met la variable dans les liaisons pour le script courant et groovy de la traite (pour la plupart) comme à l'échelle mondiale d'étendue variable:
x = 1
assert x == 1
assert this.binding.getVariable("x") == 1
En utilisant le mot-clé def au lieu de ne pas mettre les variables dans les scripts de liaisons:
def y = 2
assert y == 2
try {
this.binding.getVariable("y")
} catch (groovy.lang.MissingPropertyException e) {
println "error caught"
}
Impressions: "erreur détectée"
En utilisant le mot-clé def dans les grands programmes est importante car elle permet de définir l'étendue dans laquelle la variable peut être trouvé et peut aider à préserver l'encapsulation.
Si vous définissez une méthode dans votre script, il n'aura pas accès aux variables qui sont créés avec "def" dans le corps du script principal qu'ils ne sont pas dans le champ d'application:
x = 1
def y = 2
public bar() {
assert x == 1
try {
assert y == 2
} catch (groovy.lang.MissingPropertyException e) {
println "error caught"
}
}
bar()
imprime "erreur détectée"
Le "y" à la variable n'est pas dans le champ d'application à l'intérieur de la fonction. "x" est portée comme groovy va vérifier les liaisons du script courant pour la variable. Comme je l'ai dit plus tôt, c'est simplement du sucre syntaxique pour faire rapide et sale de scripts plus rapide à taper (le plus souvent un doublures).
La bonne pratique dans les grandes scripts est de toujours utiliser le "def" mot clé de sorte que vous ne courez pas dans d'étranges questions de portée ou d'interférer avec les variables que vous ne souhaitez pas.