JavaFree.org | RubyOnBr.org

Selecionar valores válidos por regexp dentro de um case

Acompanhar Selecionar valores válidos por regexp dentro de um case 13 posts, 6 participantes

Avatar Shairon Toledo 1428 posts

Pra desinibir a galera vou lançar aqui uma solução grossa do seguinte problema:

Tem-se por definição que um método recebe um valor, o valor é um nome de fruta(fruta mesmo… vegetal :) em um mecanismo de detecção que analisa o inicio do nome da fruta temos uma separação entre

“iniciadas com ‘a’, iniciadas com ‘m’ e um grupo iniciadas com ‘c’ ou ‘l’ ou ‘b’”

somente se a fruta for conhecida(constante FRUTAS).

Primeira Sugestão:

Obs: se o case te deu dor de barriga dê uma olhada aqui

Refactor Me!

 
Avatar Mereghost 1476 posts

Shairon,

O processamento para cada case seriam muito diferentes? Senão dá pra cortar o case por completo.

 
Avatar Shairon Toledo 1428 posts

O processamento para cada case seriam muito diferentes?

Sim

E tem que verificar se a fruta é válida também.

 
Avatar Mereghost 1476 posts

Bom, verificar se é válido pode ser com um include?

Vejamos se melhora:

PS: Gostei dessa divisão do fórum. Me força a pensar em soluções mais simples para os meus códigos. =)

 
Avatar Rodrigo Rosauro 310 posts

Olha… não entendi direito… mas aqui vai minha tentativa :)

 
Avatar Shairon Toledo 1428 posts

Oh Rodrigão ficou meio gateado esses ifs aê :)

Mereghost,

A regexp sua equivale à

Sendo que a lista a-c contém b e o ‘ou’ é implícito dentro dos [ ].
Subindo o raise dá pra ler o código de uma forma mais amigável(vantagem de uma DSL), a pensar de ficar ‘programação orientada a widescreen’

leves modificações…

e aì?

 
Avatar Mereghost 1476 posts

Opa! POW é o que liga!

Bah… eu me esforço com Regexes, mas sempre esqueço de fazer do modo fácil. =p

 
Avatar Bernardo Rufino 24 posts

Minha contribuição tb, não tem muito o que mexer:

 
Avatar Ronie Uliana 891 posts

Uma versão um pouco mais esotérica, aproveitando métodos singletons do Ruby e levando para o lado DSL:

Só não gostei mesmo foi de ter que adicionar os “returns”

Acho q ficaria melhor criar uma classe inteira “Fruta” que fizesse polimorfismo com a letra inicial. Mas isso depende de quantas vezes você vai querer comportamentos diferentes pras frutas. Se for só para esse aí, nem vale a pena, mas no segundo “case” eu já faria :)

Com o methodphitamine, a dá pra melhorar um pouco o:

trocando ligeiramente por:

 
Avatar coelhao 88 posts

Na verdade bagaça devia ser uma classe, ainda precisa dar um tchan pra verificar se o metodo existe antes de chamar, será esse codigo mais um pog?:)

 
Avatar Shairon Toledo 1428 posts

starts_with não é um método Matz na versão 1.8(ainda). É um método DHH por enquanto. Mais ficou doido.

 
Avatar Shairon Toledo 1428 posts

Oh Big Rabbit, esse método aê não faz nada :) é um POGão, hahahah.

 
Avatar coelhao 88 posts

po mas claro que tem utilidade…eu aprendi essa historia de send faz 2 dias e já usei em 3 coisa difentes(uma delas foi aqui mas são 3 né ;)), muito bom ruby, lembra muito o matlab, ainda bem que eu não quiz ir pelo caminho do cakephp