Groovy #6: “A verdade Groovy”

Tempo de leitura: menos de 1 minuto

inspetor bugigangaUma das coisa que mais gosto no Groovy, é que ele pode decidir se uma variável é verdadeira ou falsa, independente dela ser instância booleana. Este recurso é chamado de Groovy Truth, para isso existe algumas regrinhas que o Groovy usa para decisão.

Usualmente, cada tipo de variável tem sua regra, vejamos a baixo cada uma delas.

Expressão Booleana

Numa expressão booleana, o Groovy retornará true quando seu valor for true, nada diferente do que já conhecemos.

[code language=”groovy”]
assert true //true é true…
assert !false //…false é false, simples assim.
[/code]

Coleções, Arrays e Mapas

Uma coleção ou array não vazio é considerado true.

[code language=”groovy”]
//coleções e arrays
assert [1, 2, 3]
assert ![]
//mapas
assert [‘one’ : 1]
assert ![:]
[/code]

Iterators e Enumerations

Iterators e Enumerations serão considerados true enquanto ainda  existir item nos mesmos.

[code language=”groovy”]
//iterator
assert [0].iterator()
assert ![].iterator()
//enumeration
Vector v = [0] as Vector
Enumeration enumeration = v.elements()
assert enumeration
enumeration.nextElement()
assert !enumeration
[/code]

Matchers

Quando uma ou mais informação “casarem” com o padrão, o Matcher será true, se nada “casar”, será false.

[code language=”groovy”]
assert (‘a’ =~ /a/)
assert !(‘a’ =~ /b/)
[/code]

Strings

String, GString e CharSequences são considerados true, quando são diferente de vazio ou branco.

[code language=”groovy”]
assert ‘a’
assert !”
def nonEmpty = ‘a’
assert "$nonEmpty"
def empty = ”
assert !"$empty"
[/code]

Numbers (Integer, Long, …)

Qualquer instancia numérica é considerada true quando seu valor for diferente de 0 (zero).

[code language=”groovy”]
assert 1
assert 3.5
assert -1
assert !0
[/code]

Referencia de qualquer objeto

Objetos diferentes de nulo são considerados true, essa regra vale para qualquer objeto.

[code language=”groovy”]
assert new Object()
assert ‘String’
assert "GString${1}"
assert !null
Integer i = null
assert !i
[/code]

Customização da regra

O Groovy possibilita a customização da regra, para isso basta no meu objeto sobrescrever o método asBoolean(). Veja um exemplo:

[code language=”groovy”]
class Cor {
String nome
/**
* quando a cor for verde, retornará true, se não false.
**/
boolean asBoolean(){
nome == ‘verde’ ? true : false
}
}

assert new Cor(name: ‘verde’)
assert !new Cor(name: ‘vermelho’)
[/code]

Fonte:

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *