2016-07-12 6 views
1

Ich bin neu zu groovy und lernen, Verschlüsse von this Guide.Delegation Strategie Groovy

Immer wenn in einer Closure auf eine Eigenschaft zugegriffen wird, ohne ein Empfängerobjekt explizit festzulegen, ist eine Delegierungsstrategie beteiligt.

Sollte dies nicht zurückgegeben werden ALLAUDIN. Wo mache ich falsch?

class Example { 

class Person { 
String name 
Person(String name){ 
    this.name = name 
} 
} 

class Thing { 
String name 
Thing(String name){ 
    this.name = name 
} 
} 


static void main(String[] args){ 
    Example e = new Example(); 

    def p = new Person(e, 'allaudin') 
    def t = new Thing(e, 'laptop') 

    def getUpperName = { name.toUpperCase() } 
    getUpperName.delegate = p 
    println getUpperName() // EXAMPLE 

} 

}

Antwort

3

Sie benötigen die delegation strategy

Fügen Sie die Zeile setzen:

getUpperName.resolveStrategy = Closure.DELEGATE_FIRST 

Wo Sie den Delegaten gesetzt