Jak alokovat pole; jak vytvorik referenci na kopii pole

Martin Sittek martin.sittek na infoprojekt.cz
Úterý Červenec 30 09:53:59 MEST 2002


On 29.07.02, Honza Pazdziora wrote:
> > - jak vytvořit (lépe řečeno inicializovat) pole na konkrétní hodnoty.
> 
> Tak na konkrétní hodnoty nebo na undef?

No, nevím je-li to správné ale občas mám sklony i undef považovat 
za konkrétní hodnotu :-) 

> 	$pole[$pocet_polozek - 1] = undef;

Jestli tomu dobře rozumím, tak tenhle příkaz 

$pole[$pocet_polozek - 1] = 'konkretni_ne_undef_hodnota';

vytvoří pole, v němž bude @pole[0..$pocet_polozek-2] == undef a 
v $pole[$pocet_polozek-1] == 'konkretni_ne_undef_hodnota'. 

Nocméně pro případ undef to odpovídá otázce, díky.

> 
> nebo
> 	@pole = ( 'hodnota' ) x $pocet_polozek;

A tady bude vždy ve všech polích 'hodnota', což je ještě lepší.


Nicméně jak si tak s tím tady hraju, tak už si nejsem tak úplně jistý 
jestli má cenu to pole vůbec 'alokovat'. Měl jsem totiž pocit, že
když jej budu 'alokovat' (byť na hodnotu undef) tak se při použití
$x = $pole[$hodnota_v_mezich_pole] vyhnu takové té hlášce: 
use uninicialized value, nicméně jak to tak zkouším - asi to není 
pravda. Myslíte si, že má smysl provádět tuto 'alokaci'?


> 
> > - jak vytvořit referenci na kopii nějakého konkrátního pole. Zatím
> 
> 	$ref = [ @pole ];

Toto je přesně co jsem hledal.

> Jste si jistý, že po tohle máte v tom poli @ref_kopie_pole to, co si
> myslíte, že tam máte? Nehledě na to, že výsledkem je opět pole, nikoli
> reference.
> 
1.
> Nebo to zadání bylo "jak vytvořit pole obsahující ve svých prvcích
> reference na odpovídající prvky původního pole"? Nebo to zadání bylo
2.
> "jak vytvořit pole obsahující ve svých prvcích reference na kopie
> prvků původního pole"?
> 

Myslel jsem tu druhou variantu, resp. "jak vytvořit pole obsahující 
ve svých prvcích reference na kopie celého původního pole".

Díky za odpovědi.

--
Martin Sittek


Další informace o konferenci Perl