2012-08-28 10 views
8

¿Es posible obtener una referencia del Object que invocó un Closure en el contexto de ejecución Closure?¿Es posible obtener el objeto llamante de un cierre en groovy?

Por ejemplo:

public class Example { 

    public Example(){ 
     def a = {return this}; 
     def b = []; 

     b.metaClass.a = a; 

     println b.a(); 
    } 
} 

Quiero esta ejecución para volver b en lugar de una instancia de Example.

Respuesta

11

El objeto sobre el que se invoca el cierre se puede hacer referencia como delegate. Ejemplo:

def a = { return delegate } 
def b = [] 

b.metaClass.a = a 

assert b.a() == b 
+0

¡Gracias! ¡funcionó! –

+0

Nunca lo sabía. ¡Gracias! –

Cuestiones relacionadas