Producent/konzument (generator?) v Perlu?
Jan Kasprzak
kas na fi.muni.cz
Úterý Duben 5 11:44:39 MEST 2005
Zdravim,
jak byste v Perlu implementovali takovy ten generator
- jednu rutinu ktera na ruznych mistech dava nejake hodnoty,
a metodu na ziskavani tech hodnot postupne jednu za druhou.
Myslim ze treba C++ neco takoveho ma. Jde mi o to, ze mam nejakou
dost velkou mnozinu hodnot (potencialne prilis velkou na to abych
z ni udelal seznam a ten predaval). Cili bych potreboval neco jako
# Zpracovani - konzument
$generator->init;
while (my $hodnota = $generator->getnext) {
zpracuj_hodnotu($hodnota);
}
$generator->finish;
# Generovani - producent
sub telo_generatoru {
my $self = shift;
for my $select (@{$self->{selecty}) {
$sth = $dbh->prepare($select);
$sth->execute;
while (my $ref = $sth->fetchrow_arrayref) {
$self->yield($ref->[0]);
$self->yield($ref->[1]);
}
$sth->finish;
}
$self->yield(undef);
}
Cili problem je, ze ty hodnoty generuju na vice mistech (napriklad
z vice selectu) a potrebuju jich budto vygenerovat vic najednou
nebo si nejak zapamatovat stav - ktery select ted zrovna provadim
a na jakem jsem miste. Samozrejme si umim uchovani stavu naimplementovat,
ale pokud by byla fakt nejaka rozumna podpora pro generatory, tak by to
bylo prehlednejsi.
-Y.
--
| Jan "Yenya" Kasprzak <kas at {fi.muni.cz - work | yenya.net - private}> |
| GPG: ID 1024/D3498839 Fingerprint 0D99A7FB206605D7 8B35FCDE05B18A5E |
| http://www.fi.muni.cz/~kas/ Czech Linux Homepage: http://www.linux.cz/ |
> Whatever the Java applications and desktop dances may lead to, Unix will <
> still be pushing the packets around for a quite a while. --Rob Pike <
Další informace o konferenci Perl