March 18th, 2010 • 09:03
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"
}
Leave a Reply
Mar 18th 2010 • 15: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:
March 18th, 2010 at 16:14
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 2010 • 16: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:
March 18th, 2010 at 16:41
É melhor a gente discutir isto por e-mail. loboweissmann@gmail.com
Reply
Mar 18th 2010 • 17: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:
March 18th, 2010 at 19:30
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 2010 • 00: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 2010 • 07: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:
March 19th, 2010 at 08:26
Claro, inclusive já escrevi sobre isto neste blog.
Dê uma lida neste post: http://www.itexto.net/devkico/?p=603
Reply