Perl/Hasze
Hasz jest podobny do zwyczajnej tablicy, ale zamiast używać całkowitych indeksów, hasz używa kluczy, które mogą być dowolną wartością skalarną. Zazwyczaj kluczami są łańcuchy znaków lub liczby.
Składnią hasza jest sSyntax: zamiast używać operatora @, asocjacyjne tablice używają symbolu %, a także zamiast używać kwadratowych nawiasów [] jak w $myarray[0], do elementów w haszu odwołujemy się za pomocą nawiasów klamrowych {} jak w $myhash{"george"}
Hasze są jedną z najpotężniejszych i najczęściej używanych cech Perla. Typowym użyciem może być zbudowanie hasza, który przechowuje słownik - każdy klucz jest słowem w słowniku, a odpowiednie wartości definicją tego słowa.
Aby stworzyć hasz przechowywujący różne dźwięki zwierząt, możemy napisać tak:
my %dzwieki_zwierzat = ("kot" => "miau", "pies" => "hau", "waz" => "ssss");
Aby dostać się do wybranego elementu, używamy nawiasów klamrowych:
print STDOUT "Kot mowi " . $dzwieki_zwierzat{"kot"} . ".\n";
wypisze do STDOUT takie oto słowa:
Kot mowi miau.
Aby dodać nowy 'dźwięk' do hasza możemy napisać:
$dzwieki_zwierzat{"mysz"} = "pii!";
Aby nadpisać istniejący element, możemy napisać podobnie:
$dzwieki_zwierzat{"pies"} = "arf!"; # pies mówi teraz "arf!"
Aby usunąć element z hasza, użyj funkcji delete
delete($dzwieki_zwierzat{"kot"}); # usuwamy klucz "kot" z naszego hasza
Notatka: Pamiętaj, że w haszu nie mogą istnieć dwa takie same klucze. Przypisując ponownie wartość kluczowi, zamazuje się starą. Z drugiej strony, można to wykorzystać, jeśli chcemy tworzyć listy elementów bez powtórzeń. |
Znajdowanie wszystkich kluczy i wartości
edytujAby znaleźć wszystkie klucze lub wszystkie wartości w haszu, możemy użyć funkcji keys i values:
@wszystkie_zwierzeta = keys(%dzwieki_zwierzat); @wszystkie_dzwieki = values(%dzwieki_zwierzat);
"Tablice asocjacyjne"
edytujOryginalnie "hasz" (ang. hash) był nazywany "tablicą asocjacyjną", ale ten termin jest już lekko nieaktualny (ludzie po prostu zmęczyli się ciągłym wymawianiem ośmiu sylab). Jakkolwiek nie jest to intuicyjne dla nowych programistów Perla, "hasz" jest obecnie preferowanym określeniem. Termin ten pochodzi od informatycznego terminu tablicy haszującej.