Perl, Odkazy (45.díl)

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

Použití pevných odkazů

Podobně jako při vytváření odkazů existuje několik metod jak přistupovat k odkazovaným hodnotám. Tam, kde se ve jméně proměnné či podprogramu používá alfanumerický řetězec, lze umístit skalární proměnnou obsahující odkaz správného typu.


Máme-li v proměnné $x odkaz, před jméno této proměnné napíšeme prefix tak, jak chceme, aby se tento odkaz interpretoval. Pokud proměnná obsahuje odkaz na skalár, umístíme před ni znak $. Pokud tato proměnná odkazuje na pole, umístěním symbolu @ před jméno této proměnné získáme celé odkazované pole. Pokud chceme přistoupit k jednomu jeho prvku, napíšeme před jméno proměnné znak $ a za jméno index prvku v hranatých závorkách. Podobně postupujeme při dereferenci odkazu jakéhokoliv jiného typu.



$hodnota = $$odkaz_na_skalar;

push @$odkaz_na_pole, $retezec;

$$odkaz_na_pole[0] = 12345;

$$odkaz_na_hash{KLÍČ} = 'HODNOTA';

&$odkaz_na_funkci(1, 2, 3);

print $odkaz_na_typeglob $data;




Pro práci s prvkem pole nebo hodnotou hashe, či funkcí, na kterou je vytvořena reference, můžeme použít zápis pomocí operátoru ->. Tento operátor provede dereferenci výrazu na levé straně a následně s tímto výrazem pracuje jako s typem, na který se odkazujeme.



$odkaz_na pole = \@pole;

$odkaz_na_pole->[0];

// je první prvek pole @pole, stejné jako $$odkaz_na_pole[0]

$odkaz_na_hash = \%hash;

$odkaz_na_hash->{KLÍČ}

// je hodnota hashe %hash na pozici KLÍČ, stejné jako $$odkaz_na_hash{KLÍČ}

$odkaz_na_funkci = \&funkce;

$odkaz_na_funkci->(l,2,3);

// je volání funkce funkce(), stejné jako $$odkaz_na_funkci(1,2,3)




A to by bylo pro dnešek všechno. V dalším díle se podíváme na moduly. 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

Zobrazit: standardní | od aktivních | poslední příspěvky | všechno
Č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 třináct a čtyři