2009-09-07 14 views
7

que quieren usar maravilloso findAll con mi parámetro de filtrado de cierreparámetros de cierre maravilloso findAll

filterClosure = { it, param -> 
    it.getParam == param 
} 

¿Cómo puedo ahora llamar a este cierre en findAll? ¿Como abajo?

myColl = someColl.findAll(filterClosure ???) 

Respuesta

7

Asumiendo que su colección fue una lista, usted podría utilizar el curry para poblar el parámetro de cierre adicional con su objeto:

def someColl = ["foo", "bar", "foo", "baz", "foo"] 

def filterClosure = { it, param -> it.getParam == param } 

myColl = someColl.findAll(filterClosure.curry([getParam:'foo'])) 

assert ["foo", "foo", "foo"] == myColl 

En el código anterior, la filterClosure "que" se le asignará lo que es pasó a curry como parámetro y a "param" se le pasó un elemento de colección de findAll. Esto no funcionaría para una colección de Map ya que findAll for it toma un cierre con uno o dos parámetros.