Jak alokovat pole; jak vytvorik referenci na kopii pole

Honza Pazdziora adelton na informatics.muni.cz
Pondělí Červenec 29 15:36:02 MEST 2002


On Mon, Jul 29, 2002 at 03:27:09PM +0200, Martin Sittek wrote:
> 
> Měl bych dva dotazy:
> 
> - jak vytvořit (lépe řečeno inicializovat) pole na konkrétní hodnoty.

Tak na konkrétní hodnoty nebo na undef?

> Jedná se mi o to, aby po provedení příkazu mělo pole konkrétni
> počet položek, samozřejmě vím že perl alokuje pole dynamicky - jak
> je potřeba. Prozatím to řeším takto:
> 
> push(@pole, undef) for 1..$pocet_polozek;
> 
> Lze něco takového provést nějak efektivněji než prostřednictvím 
> cyklu for?

	$pole[$pocet_polozek - 1] = undef;

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

> - jak vytvořit referenci na kopii nějakého konkrátního pole. Zatím

	$ref = [ @pole ];

> to řeším pomocí bloku a pomocné promenné:
> 
> my @pole = (1,2,3);
> my @ref_kopie_pole;
> 
> for (my $i=0; $i<10; $i++) {
>   {
>     my @pom = @pole;
>     $ref_kopie_pole[$i] = \@pom;
>   }

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.

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
"jak vytvořit pole obsahující ve svých prvcích reference na kopie
prvků původního pole"?

-- 
------------------------------------------------------------------------
 Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
      ... all of these signs saying sorry but we're closed ...
------------------------------------------------------------------------


Další informace o konferenci Perl