Perl, Odkazy (44.díl)

Napsal O webu (») 12. 7. 2008 v kategorii Programování, přečteno: 1334×
obrazky/logo_perl.jpg

Tvorba pevných odkazů

Existuje několik způsobů, jakými lze vytvořit pevný odkaz. Konečný výsledek na použitém způsobu vytvoření odkazu nezávisí, práce s odkazy a jejich dereference jsou stále stejné. Prostor pro odkazovanou hodnotu se alokuje automaticky. Po posledním použití odkazu se alokovaná paměť automaticky uvolní.


Operátor obrácené lomítko


Tento operátor se používá pro získání odkazu na proměnnou, podprogram nebo anonymní (nepojmenovanou) skalární hodnotu.



$odkaz_na_skalar = \$prom;

$odkaz_na_pole = \@pole;

$odkaz_na_hash = \%hash;

$odkaz_na_funkci = \&podprogram;

$odkaz_na_typeglob = \*TYPEGLOB;

$odkaz_na_konstantu = \123;




U odkazu na podprogram je vždy nutné před jménem podprogramu uvést znak &. Kdybychom ho neuvedli, nejprve by se podprogram zavolal a odkaz by se vytvořil na to, co funkce vrátí. Uvedeme-li operátor obrácené lomítko před seznamem hodnot v kulatých závorkách, dochází k tomu, že výsledkem bude seznam odkazů na jednotlivé hodnoty seznamu.



@seznam_odkazu = \($s, @p, %h, &f);

@seznam_odkazu = (\$s, \@p, \%h, \&f);

// v obou případech bude stejný efekt




Anonymní konstruktor


Je možné vytvářet odkazy na datové struktury, které nejsou nijak pojmenované. Je vždy nutné u příslušného datového typu použít správný operátor. Anonymní odkazy lze vytvářet u pole (operátor " [ ]") , hashe (operátor "{ }"), skaláru (operátor " ") a podprogramu (operátor "sub").



$odkaz_na_pole = [1, 'a', 'xxxxx'];

// odkaz na pole

$odkaz_na_dny = { 'Pondělí' => 1, 'Úterý' => 2, 'Středa' => 3, 'Čtvrtek' => 4, 'Pátek' => 5};

//odkaz na hash

$odkaz_na_funkci = sub { print 'Ahoj.' };

//odkay na podprogram

sub novy_odkaz {

my $odkaz;

return \$odkaz;

}

// odkaz na skalár




Vytváření odkazů pomocí tabulky symbolů


Pomocí syntaxe * jméno { TYP } lze získat pomocí typeglobu zadaného jména odkaz na jednu jeho část určenou typem ve složených závorkách.



$odkaz_na_skalar = *x{SCALAR};

$odkaz_na_pole = *pole{ARRAY};

$odkaz_na_hash = *hash{HASH};

$odkaz_na_funkci = *f{CODE};

$odkaz_na_ovladac = *SOUBOR{IO};

$odkaz_na_typeglob = *x{GLOB};




A to by bylo pro dnešek všechno. V dalším díle se podíváme na použití pevných odkazů. V případě jakýchkoliv dotazů mě kontaktujte na email: habrman@banan.cz.


Autor: Robert Habrman
Štítky: Perl
Facebook Twitter Topčlánky.cz Linkuj.cz

Komentáře

Článek ještě nebyl okomentován.


Nový komentář

Téma:
Jméno:
Notif. e-mail *:
Komentář:
  [b] [obr]
Odpovězte prosím číslicemi: Součet čísel pět a pět