Dica Groovy: o operador spread ( *. )

Um recurso muito bacana do Groovy é o operador spread, que é usado quando desejamos invocar um método em todos os objetos presentes em um objeto agregador (Collection).

Vamos supor que eu tenha uma classe tal como a implementada abaixo:


class DigaSeuNome {

String nome
void fale() {println nome}

}

E que eu tenha uma coleção populada tal como no código abaixo:


def lista = [new DigaSeuNome(nome:"Juca"), new DigaSeuNome(nome:"Zeca")]

Em Java, se eu quiser executar o método fale() em cada uma das minhas instâncias, eu faria algo como o código abaixo:


for (DigaSeuNome instancia : lista) {
instancia.fale()
}

E em Groovy? Assim:


lista*.fale()

// Saida:
// Primeiro seŕa impresso Juca e depois Zeca

Se o método a ser executado retornar um valor, o operador spread nos trás como retorno um vetor cujo conteúdo é justamente o resultado da operação do método. O código abaixo fala por si próprio:


def lista = ["aa", "bbb", "cccc"]
assert lista*.size() == [2,3,4]

Muito legal.

Deixe uma resposta

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Rolar para cima