Creando y LLamando clausuras

El siguiente ejemplo muestra varios métodos de creación y uso de clausuras:
generaciondecodigos@nereida:~/Lgroovy/closures$ cat -n creatingandusingclosures.groovy
     1  #!/usr/bin/env groovy
     2
     3  map = [ 'a' : 1, 'b' : 2 ]
     4  println map
     5
     6  map.each { key, val -> map[key] *= 2 }
     7
     8  println map
     9
    10  map.each {  map[it.key] *= 2 }
    11
    12  println map
    13
    14  duplicate = {  map[it.key] *= 2 }
    15
    16  map.each duplicate
    17
    18  println map
    19
    20  def dup(e) {
    21    map[e.key] *= 2
    22  }
    23
    24  map.each this.&dup
    25
    26  println map
Las clausuras pueden
  1. Declararse y usarse sobre la marcha:
        map.each { key, val -> map[key] *= 2 }
    
  2. Asignarse a variables:
    duplicate = {  map[it.key] *= 2 }
    
  3. Construirse a partir de métodos:
    map.each this.&dup
    
Ejecución:
generaciondecodigos@nereida:~/Lgroovy/closures$ ./creatingandusingclosures.groovy
[a:1, b:2]
[a:2, b:4]
[a:4, b:8]
[a:8, b:16]
[a:16, b:32]



Casiano Rodríguez León
2010-04-30