Groovy

El operador Elvis de Groovy

El operador Elvis es una abreviatura del operador ternario. Un caso en el que suele utilizarse de manera habitual es para devolver un valor que es sensible por defecto cuando una expresión se resuelve como false. Un sencillo ejemplo:

// Con el operador ternario, tienes que repetir el valor a asignar
mostrarNombre = usuario.nombre? usuario.nombre: 'Anónimo'

//Con el operador de Elvis, el valor que se prueba y se usa si no es falso
mostrarNombre = usuario.nombre?: 'Anónimo'

El uso del operador Elvis reduce la verbosidad de tu código y los riesgos de errores, en caso de refactorizaciones, al eliminar la necesidad de duplicar la expresión que se prueba, tanto en la condición, como en el valor de retorno positivo.

La clase Expando de Groovy

¿Te imaginas una clase de Groovy a la que le puedes añadir, en tiempo de ejecución, propiedades y métodos? Pues eso es lo que te ofrece su clase Expando, cuyo uso es muy similar al modo en el que, en JavaScript, se usan objetos instanciando la variable Object.

// Define la classe Expando con dos propiedades:
def blog = new Expando(titulo : "metroSetenta", subtitulo : "Arquitectura y diseño de software")
// Añade una nueva propiedad a Expando:
blog.url="metrosetenta.es"
// Incluye un método con un cierre:
blog.toString={
  return """
    Título del blog:    ${titulo}
    Subtítulo del blog: ${subtitulo}
    URL del blog:       ${url}
  """
}
println (blog)

Observa en el pequeño ejemplo de arriba que el constructor usa una notación similar a los mapas Groovy y, que los métodos, son implementados usando cierres (closures). Puedes probar este pequeño ejemplo guardándolo en un archivo para ejecutarlo con el comando groovy.