closures
Closures: respuesta a Vekman
Leyendo el comentario de Venkman, debo reconocer que tiene razón en que el ejemplo que utilicé en el artículo era de funciones anónimas y no de un closure propiamente tal.
Para entender la diferencia, les pido que lean el interesante artículo Blocks and Closures in Ruby, donde el autor de Ruby nos habla sobre ambas estructuras. Leyendo con atención, llegué al siguiente ejemplo operacional en Ruby que puede ser útil para ver como funciona una closure:
- def ciclo(colores)
- x=-1
- return Proc.new {
- x=(x+1) % colores.size
- colores[x]
- }
- end
- closure=ciclo(%w{rojo azul negro})
- 1.upto(10) {|i|
- puts closure.call
- }
La salida en
rojo azul negro rojo azul negro rojo azul negro rojo
Como se podrán dar cuenta, la función ciclo devuelve un procedimiento, dentro del cual se mantienen las variables colores y x. Cada vez que se llama el Proc, ahora convertido en closure, x se incremente en uno y nos entrega el elemento del array que corresponde.
- Añadir nuevo comentario
- Leer más
- 1987 lecturas

Comentarios recientes
hace 2 días 6 horas
hace 2 días 6 horas
hace 4 días 5 horas
hace 5 días 19 horas
hace 1 semana 5 días
hace 1 semana 5 días
hace 2 semanas 16 horas
hace 2 semanas 6 días
hace 3 semanas 2 días
hace 3 semanas 4 días