Secciones

¿Qué son los closures de Groovy?

Inicio » Artículos » ¿Qué son los closures de Groovy?
La categoría del artículo es
Escrito el 18 June 2009, 14:53


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.

Groovy:
def imprimeNombre = { nombre -> println "Mi nombre es ${nombre}"}

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.

Groovy:
def quintetoInicial = ["Calderón", "Navarro", "Jiménez", "Garbajosa", "Pau Gasol"]

salida = ""
quintetoInicial.each {
    salida += it +', '
}
assert 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.


¿Has utilizado vez el concepto de closure en algún otro lenguaje de programación?

Ayuda Textile