Jak vynutit list kontext?
Pavel Smerk
xsmerk na fi.muni.cz
Pátek Prosinec 5 16:57:26 CET 2014
On Fri, Dec 05, 2014 at 10:02:42AM +0100, Jan Kasprzak wrote:
> jaky je nejrozumnejsi zpusob, abych necemu vnutil seznamovy kontext?
> V llama book se pise u funkce scalar:
>
> > Oddly enough, there's no corresponding function to force list context.
> > It turns out you almost never need it. Trust us on this, too.
>
> Tohle je potreba, kdyz chci pocet prvku vraceneho pole, ale to pole
> je vracene z neceho, co ve skalarnim kontextu vraci neco jineho,
> napriklad pouze prvni prvek.
>
> Ja jsem na to narazil u file-globu, napriklad chci zjistit, kolik v adresari
> mam perlovych zdrojaku:
>
> @a = <*.pl>;
> print "Pocet je ", scalar @a, ".\n";
>
> No ale pokud fakt ten seznam nepotrebuji a potreboval bych jen pocet?
> Konstrukce
>
> $a = <*.pl>;
> print "Pocet je $a.\n";
>
> vrati jmeno prvniho perloveho zdrojaku, coz nechci. Prisel jsem tak leda
> na konstrukci typu
>
> $a = () = <*.pl>;
No já asi v takových případech píšu @{[<*.pl>]}, ale jestli je to
průhlednější nebo elegantnější, to nevím (kratší to není :-).
> print "Pocet je $a.\n";
>
> Coz sice funguje, ale nevim jestli kdyz nekdo prijde po mne, bude
> na prvni pohled vedet, co tento kus kodu dela. Existuje neco elegantnejsiho?
=()= jsem teda nikdy nepoužil, ale jinak je to ve všech těch seznamech typu
http://www.catonmat.net/blog/secret-perl-operators/, čili by to snad
"pasivně" nemělo překvapit ani toho, kdo to "aktivně" nepoužívá.
S pozdravem, P.
Další informace o konferenci Perl