AOWS

Just another adrian’s weblog

Verdad verdadera: Groovy truth

with one comment

El tipo boolean es el único que se puede evaluar a cierto o falso en Java. Algo que por ejemplo no podemos hacer con un String:

if ("esto es un string") {
  // ...
}

Por el contrario, en Groovy todos los tipos tienen su correspondiente verdad:

tipo se evalúa a true
String longitud mayor que cero
Collection colección no vacía
Map mapa no vacío
Number distinto de 0
Iterator si hasNext() devuelve true
Enumeration si hasMoreElements() es true
Matcher si find() retorna true

Esto es cierto para las clases propias de Java / Groovy. ¿Pero qué pasa con las instancias de nuestras clases?

Hasta ahora, las referencias a objetos (de tipo distinto a los anteriores) se evaluaban a true si no eran nulas:

def myNullObject = null
assert !myNullObject

def myNonNullObject = new NonNullObject()
assert myNonNullObject

Pero con la salida de Groovy 1.7 podemos configurar la verdad de cada objeto con el método asBoolean():

class MyRidiculousObject {
  String oneAttr
  Long otherAttr

  boolean asBoolean() {
    oneAttr == "verdad verdadera"
  }
}

assert new MyRidiculousObject(oneAttr: "verdad verdadera", otherAttr: 100)
assert !new MyRidiculousObject(oneAttr: "verdad no tan verdadera", otherAttr: 50)

Y por supuesto cambiar la verdad de otras clases:

String.metaClass.asBoolean = {
  delegate == "verdad verdadera"
}

assert "verdad verdadera"
assert !"verdad no tan verdadera"

Written by adrian

9 enero, 2010 a 17:35

Publicado en Uncategorized

Tagged with ,

Una respuesta

Subscribe to comments with RSS.

  1. Estaba buscando justamente esto para comprenderlo mejor, muchas gracias por el aporte.

    Joxebus

    5 diciembre, 2012 at 20:02


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: