Obviamente en Groovy podemos utilizar variables. A diferencia de Java, una variable no es tipada, y puede referenciar a distintos objetos.
Creamos un nuevo script Variables.groovy y pongamos el siguiente código:
package com.dosideas.groovy //definimos una variable. Se inicializan en null def y println y //no es necesario usar el keyword "def" x = 1 println x //la misma variable puede tener distintos tipos de datos x = false println x x = -3.1499392 println x //podemos asignarle un objeto Java, en este caso una instancia de Date x = new java.util.Date() println x //un String x = "Hi" println x //podemos referenciar a variables dentro de un String, con el signo $ println "hola, $x"
Como vemos, las variables en Groovy son versátiles, y pueden referenciar a distintos tipos de datos.
Groovy tiene incorporada sintáxis para la manipulación de listas y maps. Las listas almacenan datos ordenados.
package com.dosideas.groovy def unaLista = [1776, -1, 33, 99, 0, 928734928763] println unaLista[0] println unaLista.size(); def unaListaVacia = []
También es posible crear y utilizar maps:
package com.dosideas.groovy def unMap = ["Pedro" : "no terminó", "Juan": 99, "Zim":"no terminó"] //acceder a un elemento con distinta sintáxis println unMap["Pedro"] println unMap.Pedro //asignar un valor unMap["Luis"] = "Otro valor" println unMap["Luis"] //podemos definir un map sin elementos def unMapVacio = [:]
En ambos casos podemos preguntar por su tamaño:
unaLista.size() unMap.size()
Las expresiones condicionales suelen expresarse con bloques "if", que son iguales a los de Java. Por ejemplo:
amPM = Calendar.getInstance().get(Calendar.AM_PM) if (amPM == Calendar.AM) { println("Buen día") } else { println("Buenas tardes") }
En Groovy hay varias formas prácticas para recorrer listas.
package com.dosideas.groovy nombres = ["Zim","Dib","Gaz","Tak"] //recorriendo en forma "clásica" for (i=0; i < nombres.size(); i++) { println nombres[i] } //o incrementando el índice de otra forma for (i in 0..nombres.size()-1) { println nombres[i] } //o directamente sabiendo la cantidad de elementos for (i in 0..3) { println nombres[i] } //una forma más simple y prolija, sin indice for (i in nombres) { println i } //o un bucle que se repite varias veces 4.times { println nombres[it] } //igual al anterior, pero sobre el tamaño de la colección nombres.size().times { println nombres[it]}