Dernière modification : Dec 08 , 2024

1.1 Comprendre les Closures en Groovy

// Exemple de Closure simple
def myClosure = { println "Ceci est une Closure en Groovy" }
myClosure()

1.2 Structure d'un Closure

// Exemple de Closure avec des paramètres
def add = { a, b -> a + b }
println add(3, 5)  // Résultat: 8

2.1 Paramètres d'un Closure

// Exemple de Closure avec des paramètres
def greetClosure = { name -> "Bonjour, $name !" }
println greetClosure("Alice")  // Résultat: Bonjour, Alice !

2.2 Utilisation de la Paramétrisation

// Exemple de Closure avec paramètres optionnels
def greet = { name, greeting = "Bonjour" -> "$greeting, $name !" }
println greet("Bob")  // Résultat: Bonjour, Bob !
println greet("Alice", "Salut")  // Résultat: Salut, Alice !

Module 3: this, delegate et owner

3.1 Le mot-clé this dans un Closure

// Exemple de Closure utilisant this
def closureWithThis = {
    def localVar = 42
    this.getLocalVar()
}

def getLocalVar = {
    println "Accès à localVar depuis un Closure: $localVar"
}

closureWithThis()

3.2 Le concept de Delegate

// Exemple d'utilisation de delegate dans un Closure
class MyClass {
    def greeting = "Bonjour"
}

def myInstance = new MyClass()

def closureWithDelegate = {
    println "Message: $greeting"
}

closureWithDelegate.delegate = myInstance
closureWithDelegate()

3.3 Le mot-clé owner

// Exemple d'utilisation de owner dans un Closure
def closureWithOwner = { println "Propriété de l'owner: $ownerProperty" }

def ownerObject = [ownerProperty: "Valeur de l'owner"]
closureWithOwner.owner = ownerObject
closureWithOwner()

Ces exemples couvrent les bases des Closures en Groovy, en mettant l'accent sur la paramétrisation et l'utilisation de this, delegate, et owner. N'hésitez pas à explorer et expérimenter avec ces concepts pour approfondir votre compréhension.