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