[Cascavel-pm] [Spam] Re: [Spam] Re: PrincipaisContribuidoresCascavelPM
Flavio S. Glock
fglock em gmail.com
Quinta Maio 31 06:09:50 PDT 2007
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
Mais detalhes sobre a lista de discussão Cascavel-pm