↓ Arquivos ↓

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 Comments

  • Mar 18th 201015:03
    by 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

    Reply

    admin Reply:

    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?

    Reply

  • Mar 18th 201016:03
    by 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.

    Reply

    admin Reply:

    É melhor a gente discutir isto por e-mail. loboweissmann@gmail.com

    Reply

  • Mar 18th 201017:03
    by Bruno

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

    Reply

    admin Reply:

    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!)

    Reply

  • Mar 19th 201000:03
    by 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

    Reply

  • Mar 19th 201007:03
    by Bruno

    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

    Reply

    admin Reply:

    Claro, inclusive já escrevi sobre isto neste blog.
    Dê uma lida neste post: http://www.itexto.net/devkico/?p=603

    Reply

  • Leave a Reply

    Get Adobe Flash playerPlugin by wpburn.com wordpress themes