sort: argument
Honza Pazdziora
adelton na informatics.muni.cz
Úterý Listopad 4 17:20:49 MET 2003
On Tue, Nov 04, 2003 at 04:55:34PM +0100, Jiri Polcar wrote:
> prave jsem resil jednu "zahadu". Cekal jsem, ze kdyz napisu
>
> @result = sort fce_co_vraci_seznam( $argument ),
>
> tak v @result bude setridenej seznam, kterej vrati fce
> fce_co_vraci_seznam. Tak tomu ale neni. Tady posilam kod, kterym jsem to
> testoval. Muze me nekdo vysvetlit co se ve kterym pripade deje? No,
> alespon v 1., 2., 5. a 6..
>
> print "\n1.\n";
> @a = sort get( 'arg' );
@a = (sort get 'arg');
Coz je volani radici funkce get na jednoprvkovy seznam 'arg'.
Jednoprvkovy seznam neni treba tridit.
> print "\n2.\n";
> @a = sort get;
@a = sort('get');
Tohle je primocare.
> print "\n3.\n";
> @a = sort &get;
>
> print "\n4.\n";
> @a = sort &get( 'arg' );
@a = sort(&get);
@a = sort(&get('arg'));
To co ocekavate, rekl bych.
> print "\n5.\n";
> @a = sort( get( 'arg' ) );
>
> print "\n6.\n";
> @a = sort( get( 'arg' ) );
A tohle mi prijde jako dve stejne veci, na prvni i druhy pohled,
@a = sort(get('arg'));
Je treba si uvedomit, ze sort jako prvni vec ocekava blok nebo jmeno
subrutiny. Ktera je pak volana na prvky seznamu. Pokud tu funkci
chcete zavolat, aby Vam vratila ten seznam, pouzijte zavorky nebo &.
--
------------------------------------------------------------------------
Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
.project: Perl, mod_perl, DBI, Oracle, large Web systems, XML/XSL, ...
Only self-confident people can be simple.
Další informace o konferenci Perl