Un closure es un trozo de código empaquetado como un objeto y definido entre llaves. Actúa como un método, al cual se le pueden pasar parámetros y pueden devolver valores. Es un objeto normal y corriente al cual se pasa una referencia de la misma forma que se le pasa a cualquier otro objeto.
Posiblemente estés pensando, que de momento los closures no te aportan nada que no puedas hacer nada con cualquier otro lenguaje de programación y posiblemente incluso sea cierto. Sin embargo, los closures nos aportan agilidad a la hora de programar, que es lo que en principio buscamos utilizando un lenguaje como Groovy.
Declarando closures
El siguiente fragmento de código representa la declaración y el uso de un closure muy básico en Groovy. En él, se imprime una frase a partir de un parámetro pasado al closure.
imprimeNombre("Juan")
imprimeNombre "Yolanda"
Closures como objetos
Anteriormente comentábamos que los closures son objetos y que como tales, pueden ser pasados como parámetros a funciones. Un ejemplo de este caso es el método each de las listas, al cual se le puede pasar un closure para realizar una determinada operación sobre cada elemento de la lista.
salida = ""', ''Calderón, Navarro, Jiménez, Garbajosa, Pau Gasol, '
Como ves, el closure no ha recibido ningún parámetro, sin embargo, ha sido posible acceder al contenido de cada posición de la lista mediante la palabra reservada it.