groovy no es java sin punto y coma v3
TRANSCRIPT
![Page 1: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/1.jpg)
Groovy Goodness
PABLO ALBA CHAO
#708090
Porque Groovy no es Java sin puntos y comas
![Page 2: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/2.jpg)
Ego-slide
Pablo AlbaCTO en Kaleidos Open Source
http://kaleidos.net/708090/
http://albaontech.wordpress.com
@_pabloalba_
![Page 3: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/3.jpg)
Episode I
Corrían los 90...
![Page 4: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/4.jpg)
Corrían los 90...
![Page 5: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/5.jpg)
Corrían los 90...
![Page 6: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/6.jpg)
Corrían los 90...
![Page 7: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/7.jpg)
Corrían los 90...
![Page 8: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/8.jpg)
Corrían los 90...
BufferedReader br = new BufferedReader(new FileReader("file.txt"));try {
StringBuilder sb = new StringBuilder();String line = br.readLine();
while (line != null) { sb.append(line); sb.append(System.lineSeparator()); line = br.readLine();
}String everything = sb.toString();
} finally {br.close();
}
![Page 9: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/9.jpg)
Corrían los 90...import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.MalformedURLException;import java.net.URL; public class Main { public static void main(String[] args) { try { URL google = new URL("http://www.google.com/"); BufferedReader in = new BufferedReader(newInputStreamReader(google.openStream())); String inputLine; while ((inputLine = in.readLine()) != null) System.out.println(inputLine); } in.close(); } catch (MalformedURLException me) { System.out.println(me); } catch (IOException ioe) { System.out.println(ioe); } }//end main
}
![Page 10: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/10.jpg)
Episode II
Groovy
![Page 11: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/11.jpg)
Groovy
● Los archivos llevan extensión .groovy● No lleva punto y coma al final● Es casi al 100% compatible con código java
¿Qué sabe mucha gente sobre Groovy?
![Page 12: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/12.jpg)
Groovy
<<a flat learning curve for Java developers>>
Guillaume Laforge
![Page 13: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/13.jpg)
Groovy
BufferedReader br = new BufferedReader(new FileReader("file.txt"));try {
StringBuilder sb = new StringBuilder();String line = br.readLine() ;
while (line != null) { sb.append(line) ; sb.append(System.lineSeparator()) ; line = br.readLine() ;
}String everything = sb.toString() ;
} finally {br.close();
}
![Page 14: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/14.jpg)
Groovy
BufferedReader br = new BufferedReader(new FileReader(" file.txt"))try {
StringBuilder sb = new StringBuilder()String line = br.readLine()
while (line != null) { sb.append(line) sb.append(System.lineSeparator()) line = br.readLine()
}String everything = sb.toString()
} finally {br.close()
}
![Page 15: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/15.jpg)
Groovy
File file = new File("file.txt"))String everything = file.text
Groovy goodness...
![Page 16: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/16.jpg)
Groovy
URL url = "http://google.com ".toURL()print url.text
Groovy goodness...
![Page 17: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/17.jpg)
Groovy
● No quiero trollear a Java
Disclaimer
● Java 8 ha dado un paso de gigante● Pero Groovy mola más ;)
![Page 18: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/18.jpg)
Groovy
Hubert A. Klein Ikkink (MrHaki)
http://www.mrhaki.com/
Groovy Goodness: El libro
![Page 19: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/19.jpg)
Episode III
Básicos y misceláneos de groovy
![Page 20: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/20.jpg)
Básicos y misceláneos de groovy
public class Saludador {private String usuario;
public String getUsuario() {return usuario;
}
public void setUsuario(usuario) {this.usuario = usuario;
}
public String saluda(String nombre){return ("Hola " + nombre + ", yo soy " + usuario);
}}
Saludador saludador = new Saludador();
saludador.setUsuario("Pablo");
System.out.println(saludador.saluda("Guillaume"));
Puntos y coma opcionales
![Page 21: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/21.jpg)
Básicos y misceláneos de groovy
public class Saludador {private String usuario
public String getUsuario() {return usuario
}
public void setUsuario(usuario) {this.usuario = usuario
}
public String saluda(String nombre){return ("Hola " + nombre + ", yo soy " + usuario)
}}
Saludador saludador = new Saludador()
saludador.setUsuario("Pablo")
System.out.println(saludador.saluda("Guillaume"))
Paréntesis opcionales
![Page 22: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/22.jpg)
Básicos y misceláneos de groovy
public class Saludador {private String usuario
public String getUsuario() {return usuario
}
public void setUsuario(usuario) {this.usuario = usuario
}
public String saluda(String nombre){return "Hola " + nombre + ", yo soy " + usuario
}}
Saludador saludador = new Saludador()
saludador.setUsuario "Pablo"
System.out.println saludador.saluda("Guillaume")
Returns opcionales
![Page 23: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/23.jpg)
Básicos y misceláneos de groovy
public class Saludador {private String usuario
public String getUsuario() {usuario
}
public void setUsuario(usuario) {this.usuario = usuario
}
public String saluda(String nombre){"Hola " + nombre + ", yo soy " + usuario
}}
Saludador saludador = new Saludador()
saludador.setUsuario "Pablo"
System.out.println saludador.saluda("Guillaume")
Public opcionales
![Page 24: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/24.jpg)
Básicos y misceláneos de groovy
class Saludador {private String usuario
String getUsuario() {usuario
}
void setUsuario(usuario) {this.usuario = usuario
}
String saluda(String nombre){"Hola " + nombre + ", yo soy " + usuario
}}
Saludador saludador = new Saludador()
saludador.setUsuario "Pablo"
System.out.println saludador.saluda("Guillaume")
Tipos opcionales
![Page 25: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/25.jpg)
Básicos y misceláneos de groovy
class Saludador {private String usuario
String getUsuario() {usuario
}
void setUsuario(usuario) {this.usuario = usuario
}
String saluda(String nombre){"Hola " + nombre + ", yo soy " + usuario
}}
def saludador = new Saludador()
saludador.setUsuario "Pablo"
System.out.println saludador.saluda("Guillaume")
Atajo para print
![Page 26: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/26.jpg)
Básicos y misceláneos de groovy
class Saludador {private String usuario
String getUsuario() {usuario
}
void setUsuario(usuario) {this.usuario = usuario
}
String saluda(String nombre){"Hola " + nombre + ", yo soy " + usuario
}}
def saludador = new Saludador()
saludador.setUsuario "Pablo"
println saludador.saluda("Guillaume")
Getters y setters opcionales
![Page 27: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/27.jpg)
Básicos y misceláneos de groovy
class Saludador {private String usuario
String saluda(String nombre){"Hola " + nombre + ", yo soy " + usuario
}}
def saludador = new Saludador()
saludador.setUsuario "Pablo"
println saludador.saluda("Guillaume")
Invocación al setter "mágica"
![Page 28: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/28.jpg)
Básicos y misceláneos de groovy
class Saludador {private String usuario
String saluda(String nombre){"Hola " + nombre + ", yo soy " + usuario
}}
def saludador = new Saludador()
saludador.usuario = "Pablo"
println saludador.saluda("Guillaume")
Constructor por parámetros con nombre "mágico"
![Page 29: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/29.jpg)
Básicos y misceláneos de groovy
class Saludador {private String usuario
String saluda(String nombre){"Hola " + nombre + ", yo soy " + usuario
}}
def saludador = new Saludador(usuario:"Pablo")
println saludador.saluda("Guillaume")
Cadenas interpoladas (GStrings)
![Page 30: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/30.jpg)
Básicos y misceláneos de groovy
class Saludador {private String usuario
String saluda(String nombre){"Hola $nombre, yo soy $usuario"
}}
def saludador = new Saludador(usuario:"Pablo")
println saludador.saluda("Guillaume")
Reformateamos...
![Page 31: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/31.jpg)
Básicos y misceláneos de groovy
class Saludador { private String usuario
String saluda(String nombre){"Hola $nombre, yo soy $usuario"
}}
def saludador = new Saludador(usuario:"Pablo")println saludador.saluda("Guillaume")
public class Saludador {private String usuario;
public String getUsuario() {return usuario;
}
public void setUsuario(usuario) {this.usuario = usuario;
}
public String saluda(String nombre){return ("Hola " + nombre + ", yo soy " + usuario);
}}
Saludador saludador = new Saludador();
saludador.setUsuario("Pablo");
System.out.println(saludador.saluda("Guillaume"));
![Page 32: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/32.jpg)
Básicos y misceláneos de groovy
![Page 33: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/33.jpg)
Básicos y misceláneos de groovy
Dinámico
def saluda() { def a = "hola mundo" println a a = 3 print a}
void despidete() {Integer a = 3println aa = "adios" // Error en tiempo de ejecuciónprintln a
}
![Page 34: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/34.jpg)
Básicos y misceláneos de groovy
Estático. Si quieres.
import groovy.transform.CompileStatic
@CompileStaticvoid despidete() {
Integer a = 3println aa = "adios" //Error en tiempo de compilaciónprintln a
}
![Page 35: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/35.jpg)
Básicos y misceláneos de groovy
Comparación de cadenas
def a = "hola"
assert "hola" == a
![Page 36: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/36.jpg)
Básicos y misceláneos de groovy
Return opcional
String suma(int a, int b) { a + b}
assert suma(2, 3) == 5
![Page 37: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/37.jpg)
Básicos y misceláneos de groovy
Asignación múltiple / Retorno múltiple
def iAmHere() { [29.20090, 12.90391]}
def (coordX, coordY) = iAmHere()
assert coordX == 29.20090assert coordY == 12.90391
![Page 38: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/38.jpg)
Básicos y misceláneos de groovy
Listas (arrays)
//JAVAString[] lista = new String[] { "uno", "dos", "tres" };
//GROOVYdef lista = ['uno', 'dos', 'tres']
// En realidad son ArrayListlista.add(1000)assert 4 == lista.size()
![Page 39: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/39.jpg)
Básicos y misceláneos de groovy
assert ["Murdock"] == equipo[2]
assert ["Hannibal", "Fenix"] == equipo[0..1]
assert ["Murdock", "Fenix"] == equipo[2..1]
assert ["Fenix", "Murdock", "MA"] == equipo[1..-1]
Listas: Sublistas
def equipo = ["Hannibal", "Fenix", "Murdock", "MA"]
![Page 40: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/40.jpg)
Básicos y misceláneos de groovy
Mapas
//JAVAMap <String, String> mapa = new HashMap<String, String>();mapa.put("nombre", "Pablo");mapa.put("apellido", "Alba");
//GROOVYdef mapa = [nombre:"Pablo", apellido:"Alba"]
![Page 41: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/41.jpg)
Básicos y misceláneos de groovy
Casting automático
String diTuNombre() { Integer a = 3}
def a = diTuNombre() assert a == "3"assert a.class == String
![Page 42: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/42.jpg)
Básicos y misceláneos de groovy
La verdad en Groovy
assert !( null )assert !( "" )assert !( [] )assert !( [:] )assert !( 0 )
assert new Object()assert "string"assert [1, 2, 3]assert [a:1]assert 12345
![Page 43: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/43.jpg)
Básicos y misceláneos de groovy
Groovy como lenguaje de scripting
println "Hola " + args[0]
meDaIgualElNombre.groovy
groovy meDaIgualElNombre.groovy Pablo
![Page 44: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/44.jpg)
Episode IV
Operadores
![Page 45: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/45.jpg)
Operadores
Navegación segura
// Modo "JAVA"if (company != null && company.getAddress() != null && company.getAddress().getStreet() != null) { println company.address.street.name}
// Modo "Groovy"println company?.address?.street?.name
![Page 46: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/46.jpg)
Operadores
Operador Elvis
def text
// Operador ternario normaldef ternaryOutput = (text != null) ? text : 'Hello Groovy!'
// Operador Elvis// Esto se lee: 'Si text no es nulo, asigna text a// elvisOutput. De otra forma, asigna 'Viva Las Vegas!' a elvisOutput.def elvisOutput = text ?: 'Viva Las Vegas!'
![Page 47: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/47.jpg)
Operadores
In
// Modo "JAVA"String[] list = {"a", "b", "c"};assert Arrays.asList(list).contains("a")
// Modo "GROOVY"def list = ["a", "b", "c"]assert "a" in list
![Page 48: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/48.jpg)
Operadores
Multiplicación de String
println '-' * 80
// ----------------------------------------------------------------------------
![Page 49: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/49.jpg)
Episode IV
Strings
![Page 50: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/50.jpg)
Strings
def s1 = 'Esto es una cadena, y podemos usar "comillas dobles" \sin escaparlas’
Comillas simples
![Page 51: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/51.jpg)
Strings
def s1 = ‘‘‘Esto es una cadena multilíneapodemos escribirun montón de líneassin preocuparnos de todoel lío de la concatenación’’’
Comillas simples triples
![Page 52: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/52.jpg)
Strings
def s3 = /Podemos meter casi cualquier cosa en una "string" 'slasy' sin \escaparla. Se usa mucho para expresiones regulares/
Slashy
![Page 53: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/53.jpg)
Strings
def s1 = "Esto es una cadena, y podemos usar ‘comillas simples’ \sin escaparlas"
Comillas dobles
![Page 54: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/54.jpg)
Strings
def s1 = """Esto es una cadena multilíneapodemos escribirun montón de líneassin preocuparnos de todoel lío de la concatenación"""
Comillas dobles triples
![Page 55: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/55.jpg)
Strings
def nombre = "Pablo"
def s1 = "Hola, $nombre"
assert s1 == "Hola, Pablo"
def edad = 37
def s2 = "En el 2050 tendrás ${edad + 34} años"
assert s2 == "En el 2050 tendrás 71 años"
GStrings
![Page 56: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/56.jpg)
Strings
'42.42'.isNumber()
'42.42'.isDoble()
'42.42'.isFloat()
'42.42'.isInteger()
'42.42'.isLong()
¿Es un número?
![Page 57: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/57.jpg)
Strings
def s = 'Acceder a las cadenas en Groovy es fácil.'
assert 'A' == s.getAt(0)
// Las cadenas funcionan como listas
assert 'A' == s[0]
assert 'Groovy' == s[25..30] // Podemos usar rangos.
Substrings
![Page 58: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/58.jpg)
Strings
assert 'GROOVY' == 'groovy'.toUpperCase()
assert 'groovy' == 'GROOVY'.toLowerCase()
assert 'Groovy' == 'groovy'.capitalize()
Mayúsculas y minúsculas
![Page 59: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/59.jpg)
Strings
def s = 'Esto en otros lenguajes es un dolor...'
String encoded = s.bytes.encodeBase64().toString()
assert 'RXN0byBlbiBvdHJvcyBsZW5ndWFqZXMgZXMgdW4gZG9sb3IuLi4=' == encoded
byte[] decoded = encoded.decodeBase64()
assert s == new String(decoded)
Base64
![Page 60: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/60.jpg)
Episode V
Closures
![Page 61: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/61.jpg)
Closures
def sumador = {a, b -> a + b }
assert sumador (3, 4) == 7
assert sumador (‘H’, ‘ola’) == ‘Hola’
Closure
![Page 62: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/62.jpg)
Closures
def doblador = { it * 2}
assert doblador (3) == 6
assert doblador (‘H’) == ‘HH’
"it"
![Page 63: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/63.jpg)
Closures
def multiplicador = { int a, int b = 10 -> a * b}
assert multiplicador (2, 3) == 6
assert multiplicador (5) == 50
//MissingMethodException//multiplicador (‘a’)
Valores por defecto
![Page 64: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/64.jpg)
Closures
def printer = System.out.&println
printer "Hola"
Métodos como closures
![Page 65: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/65.jpg)
Episode VI
Listas y mapas
![Page 66: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/66.jpg)
Listas y mapas
assert 'Lobezno' == list.find { it == 'Lobezno' }
assert ['Tormenta', 'Rondador'] == list.findAll { it.size() > 7 }
assert 2 == list.findLastIndexOf { it.size() == 7 }
Listas: Buscando datosdef patrulla = ['Cíclope', 'Lobezno', 'Tormenta', 'Coloso', 'Rondador']
![Page 67: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/67.jpg)
Listas y mapas
def patrulla = ['Cíclope', 'Lobezno', 'Tormenta', 'Coloso', 'Rondador']
Listas: Iteraciones
for (i = 0; i < 5; i++) { println patrulla[i]}
5.times{ println patrulla[it]}
patrulla.each{ println it}
![Page 68: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/68.jpg)
Listas y mapas
def list = [2,5,1,9,3,4,2,8,9]
assert list.size() == 9assert list.sum() == 43assert list.max() == 9assert list.min() == 1assert list.count(9) == 2assert list.count{ it < 5 } == 5
list.sort()assert list == [1, 2, 2, 3, 4, 5, 8, 9, 9]
list.unique()assert list == [1, 2, 3, 4, 5, 8, 9]
Listas: Features ‘cool’
![Page 69: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/69.jpg)
Listas y mapas
class Persona{String nombreint edad
}def personas = [
new Persona(nombre: "Pablo", edad: 36),new Persona(nombre: "Lucía", edad: 12),new Persona(nombre: "Isabel", edad: 11)
]def nombres = personas.findAll { it.edad < 18 }
.collect { it.nombre.toUpperCase() }
.join(', ')
assert nombres == "LUCÍA, ISABEL"
Listas: Filter / Map / Reduce
![Page 70: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/70.jpg)
Episode VII
Ecosistema
![Page 71: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/71.jpg)
Ecosistema
![Page 72: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/72.jpg)
No es java sin punto y coma
![Page 73: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/73.jpg)
¡Gracias!
¡Gracias!http://kaleidos.net/708090/
http://albaontech.wordpress.com
@_pabloalba_
![Page 74: Groovy no es java sin punto y coma v3](https://reader031.vdocumento.com/reader031/viewer/2022022202/588535861a28ab26518b5d23/html5/thumbnails/74.jpg)
¿Desea saber más?
http://greachconf.com/
Madrid, April 8th & 9th, 2016
http://www.meetup.com/madrid-gug/