promenna predana odkazem

Pavel Smerk xsmerk na informatics.muni.cz
Pátek Listopad 1 14:37:14 MET 2002


On Fri, Nov 01, 2002 at 02:25:52PM +0100, Jiri Polcar wrote:
>     Zdravim,
> 
> chtel bych napsat fci, ktera prijima jako parametr jeden skalar a to
> bud jeho hodnotu, nebo odkaz na nej. 
> 
>         fce( $parametr )  NEBO  fce( \$parametr )
> 
> Fce by mela pracovat nezavisle na zpusobu predani parametru. Dal jsem do
> hromady neco takoveho:
> 
>     sub fce {
> 
>         use vars qw( $input $scalar_input );
> 
>         $input = shift;
> 
>         if ( ref( $input ) eq 'SCALAR' ) {
>             $scalar_input = ${$input};
>         } else {
>             *scalar_input = *input;
>         } 
>   
>         # vlastni telo fce ( pracuje ze $scalar_input )
>         print $scalar_input;
>   
>     }
> 
> Hlavni duvod, proc chci predavat odkaz je usetreni pameti. Muj dotaz
> zni: usetrim timto zpusobem zkutecne? Tedy, bude obsah skalarni promenne
> v pameti skutecne pouze jednou? 

IMHO ho prikazem $scalar_input = ${$input}; kopirujete z promenne odkazovane
$input do promenne $scalar_input, takze minimalne v tu chvili bude v pameti
dvakrat. Proc nechcete pouzivat primo $$input? Pokud predate primo hodnotu,
tak se imho kopiruje uz pri predavani.

Ale mozna kecam. ;-)

P.


Další informace o konferenci Perl