|
|
Hezké, hezké
|
12.8.2005 16:11
Hynek (Pichi) Vychodil
|
Jen nevím kdy se tímto tempem dostaneme k něčemu jako:
use strict;
use warnings;
sub setif (&$$) { my $sub = shift; local ($a,$b) = @_; $_[0] = $_[1] if &$sub; }
my ($d,$c) = (1,2);
setif { $a<$b } $d,$c;
print $d,$/;
|
|
|
Re: Hezké, hezké
|
12.8.2005 16:14
Ivan Majer
|
No musim priznat, ze to jde ted pomaleji. Clanku o programovani se vydava ted podstatne mene, max. jeden az dva tydne....
Neni to ale v zadnem pripade chyba autora, protoze ten ma dily v administraci pripravene. |
|
|
Re: Hezké, hezké
|
12.8.2005 18:01
Hynek (Pichi) Vychodil
|
No já si dělám srandu. Tohle je hodně daleko. To je spíš pro takové hračičky. Jako například takovej operátor merge. To mě přímo štve, že perlu chybí. To si ho člověk musí doprogramovat:
use strict;
use warnings;
sub merge (&\\@\\@) {
my ($sub,$f,$s) = @_;
my $i = 0;
no warnings 'uninitialized';
map { local (*a, *b) = (\\$_, \\$s->[$i++]); &$sub } @$f;
}
my @a=(1,2,3);
my @b=(4,5,6);
print "Merge result: ", join(' ', merge {$a += $b} @a, @b), $/;
print "a: @a$/"; Ale dost už ať čtenáře nevyděsím :-)
P.S.: Proč ten engine baští spětná lomítka? |
|
|
Re: Hezké, hezké
|
12.8.2005 18:22
Hynek (Pichi) Vychodil
|
To no warnings je tam zbytečně. Musí se použít až v místě volání merge . Je tam pro případ, že druhé pole je menší než první. Trošku se to chová jinak než jsem čekal. |
|
|
Re: Hezké, hezké
|
12.8.2005 18:48
Aleš Hakl
|
Zpetna lomitka opravena (funguje to tak jak to je mysleno, tj. ne zpetne kompatibilne).
Opravena verze vyse uvedene perlove necitelne magie:
use strict;
use warnings;
sub merge (&\@\@) {
my ($sub,$f,$s) = @_;
my $i = 0;
no warnings 'uninitialized';
map { local (*a, *b) = (\$_, \$s->[$i++]); &$sub } @$f;
}
my @a=(1,2,3);
my @b=(4,5,6);
print "Merge result: ", join(' ', merge {$a += $b} @a, @b), $/;
print "a: @a$/"; |
|
|
|
|
KOMENTARZE
|
Tylko zarejestrowani użytkownicy mogą dopisywać komentarze.
|
|
Szukanie oprogramowania
|
©Pavel Kysilka - 2003-2024 |
maillinuxsoft.cz | Design:
www.megadesign.cz
|