[Cascavel-pm] [Spam] Re: [Spam] Re: PrincipaisContribuidoresCascavelPM
Eden Cardim
edencardim em gmail.com
Quinta Maio 31 09:16:35 PDT 2007
na verdade, pensei melhor e vi que a abordagem toda está errada, mas
não é por causa dos loops. Eu deveria fazer um join nas duas tabelas,
deixando a cargo do sgbd a tarefa de iterar sobre os registros.
On 5/31/07, Flavio S. Glock <fglock em gmail.com> wrote:
> Em 30/05/07, Eden Cardim<edencardim em gmail.com> escreveu:
> >
> > my $item;
> > my $some_rs = $c->model('Data::SomeTable');
> > do {
> > $item = $some_rs->next;
> > return unless $item;
> > } while ( $c->model('Data::AnotherTable')
> > ->find( $item->somefield, { key => 'another_table_somekey' } ) );
> >
> > # fazer algo com $item aqui
> >
> > Aqui, não pude declarar a variável dentro do bloco porque eu preciso
> > usar ela depois de terminado o loop. Tem outras formas de fazer, já
> > inicializando $item, mas todas as alternativas que eu consegui
> > imaginar levaram a algum tipo duplicação ou outras "deselegâncias" no
> > código.
>
> Eden:
>
> Acredito que a melhor forma de "limpar" este código é mover o loop
> para uma subrotina.
>
> De qualquer forma, você pode mover o return() para fora do loop, acho
> que fica mais fácil de entender a lógica (não testei este código):
>
> my $some_rs = $c->model('Data::SomeTable');
> my $item;
> do {
> $item = $some_rs->next;
> }
> while ( $item
> && $c->model('Data::AnotherTable')
> ->find( $item->somefield, { key => 'another_table_somekey' }
> )
> );
> return unless $item;
> # fazer algo com $item aqui
>
> - Flavio S. Glock
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>
--
Eden Cardim
Instituto Baiano de Biotecnologia
Núcleo de Biologia Computacional e Gestão de Informações Biotecnológicas
Laboratório de Bioinformática
Mais detalhes sobre a lista de discussão Cascavel-pm