Dica Groovy: simplificando seu código com ‘with’

Imagine que você tenha uma classe tal como a abaixo:


class Pessoa {

String nome
String sobrenome
}

Há duas maneiras de preencher suas propriedades: você poderia usar um construtor como o código abaixo:


new Pessoa(nome:"Henrique", sobrenome:"Lobo Weissmann")

que é bem bacana, mas também poderia escrever um código bem mais tedioso, como este:


def pessoa = new Pessoa()
pessoa.nome = "Henrique"
pessoa.sobrenome = "Lobo Weissmann"

Entra a instrução with, que é muito similar à que encontramos no Delphi:


def pessoa = new Pessoa()

pessoa.with {
nome = "Henrique"
sobrenome = "Lobo Weissmann"
}

9 comentários em “Dica Groovy: simplificando seu código com ‘with’”

  1. Gregory Fontenele

    Eu particularmente acho a opção “new Pessoa(nome:”Henrique”, sobrenome:”Lobo Weissmann”)” melhor. :}

    Henrique,
    você sabe como faz isso em groovy?
    def self.acha_telefone()
    resposta = “”
    agenda = {:abc=>2, :def=>3, :ghi=>4, :jkl=>5, :mno=>6, :pqrs=>7, :tuv=>8, :wxyz=>9}
    File.open(“textos.txt”).each_line do |palavra|
    agenda.each_pair do |chave, valor|
    palavra.each_char do |letra|
    if chave.to_s.include? letra.to_s
    resposta <2, :def=>3, :ghi=>4, :jkl=>5, :mno=>6, :pqrs=>7, :tuv=>8, :wxyz=>9}
    Obrigado

    1. Eu também gosto mais de usar o próprio construtor, mas é bacana ver as outras opções também. :)

      Com relação a este código. Realmente não entendi o que você está querendo :( Isto é Ruby, certo?

  2. Gregory Fontenele

    Vixe, ficou estranho, vou melhorar.

    Esse código que coloquei ele pega um arquivo texto e lê a palavra e transforma ela em um número de acordo com uma tabela.
    Aqui tem a descrição completa do exercicio:
    http://br.spoj.pl/problems/ENCOTEL/

    No lugar de sair fazendo vários if`s no código essa linha:
    agenda = {:abc=>2, :def=>3, :ghi=>4, :jkl=>5, :mno=>6, :pqrs=>7, :tuv=>8, :wxyz=>9}
    Já faz metade do trabalho.

    Sim esse código é em Ruby.

  3. Onde você vê essas coisas do Groovy?
    Na série de artigos da JavaMagazine voc vai utilizar testes(TDD, Unit, Integration)?

    1. Oi Bruno,

      eu vejo estas coisas sobre Groovy no material que uso para estudar mesmo: livros, o site oficial e uma série de blogs que acompanho. Além disto, como é o que uso no dia a dia, ocasionalmente ocorre de discubrir inclusive de forma acidental. :)

      Com relação à série da Java Magazine, ao menos por enquanto não será tratado a questão dos testes. Porém nada impede que em um próximo artigo a ser publicado logo após a série este assunto seja abordado (aliás, é uma EXCELENTE idéia!)

  4. Igor Aguiar

    @Gregory
    Em groovy ficaria algo assim:

    // Converte cada linha do arquivo em numeros de acordo com o mapeamento
    def mapeamento = [abc: 2, 'def': 3, ghi: 4, jkl: 5, mno: 6, pqrs: 7, tuv: 8, wxyz: 0]
    def numeros = new File("agenda.txt").readLines().collect { palavra ->
    palavra.collect { letra ->
    // Se a letra não está no mapeamento retorna 1
    mapeamento.find({ it.key.contains letra })?.value?:1
    }.join("")
    }
    println numeros // Imprime a lista de numeros, cada numero corresponde à uma linha do arquivo

  5. Se nao for pedir muito, voce pode me falar quais os melhores blogs sobre groovy&grails?
    Sei que os nacionais posso encontrar no blogs.grailsbrasil.com e os la de fora?
    Pocha vai ser muito bom, vou esperar por esse(s) artigo(s) de grails com testes ;]

    []`s

Deixe uma resposta

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

Rolar para cima