Ce este un hash

Un hash este o structură de date care, ca o matrice, poate conține un număr arbitrar de elemente și le poate produce după cum este necesar. Dar, în loc de prelevare de probe prin indexuri numerice, așa cum se face cu arrays, se face o probă de hashes după nume. Cu alte cuvinte, indicii (aici îi vom numi cheile) nu sunt numere, ci șiruri de caractere unice. Cheile sunt șiruri de caractere. În consecință, în loc de a selecta din matricea elementului cu numărul 3, ne referim la elementul hash numit wilma.

Cheile sunt șiruri arbitrare - orice expresie de șir poate fi folosită ca o cheie hash. În plus, ele sunt unice: la fel cum există doar un element cu un număr în matrice, există doar un element cu cheie wilma în hash. Hash-ul poate fi de asemenea reprezentat ca un "barou de date" în care o etichetă este atașată la fiecare element. Puteți să vă rulați mâna în cilindru, să scoateți orice etichetă și să vedeți ce date sunt pe ea "atârnă". Cu toate acestea, nu există niciun element "prim" în cilindru, toate elementele fiind situate alternativ. În matrice, căutarea începe cu elementul 0, atunci elementul 1, apoi elementul 2 etc. apare. Nu există nici o ordine fixă, nici primul element din hash.


Conținutul său este un set de perechi de nume-valoare.

Cheile și valorile sunt valori scalare arbitrare, dar cheile sunt întotdeauna convertite în șiruri de caractere. Prin urmare, dacă utilizați expresia numerică 50/20 ca cheie1, aceasta este convertită la un șir de trei caractere "2,5" corespunzând uneia dintre chei. Ca de obicei, filozofia lui Perl privind "fără restricții artificiale" este în vigoare: un hash poate avea o dimensiune arbitrară - dintr-un hash gol, cu un zero de perechi cheie-valoare, până la umplerea tuturor memoriei libere. Unele implementări ale hash-urilor (de exemplu, în limbajul awk, de la care Larry au împrumutat ideea) cu creșterea numărului de hash-uri sunt mai lent și mai lent. Perl nu face acest lucru - utilizează un algoritm scalabil eficient eficient. Astfel, dacă hash-ul conține doar trei perechi cheie-valoare, Perl foarte repede "începe mâna în cilindru" și extrage elementul dorit. Dacă hash-ul este format din trei milioane de perechi, proba va trece cu aproape aceeași viteză. Nu vă fie frică de hashes mari. De asemenea, merită să reamintim din nou că cheile sunt întotdeauna unice, în timp ce valorile pot fi repetate. Hash-ul poate stoca numere, șiruri, valori undef în orice combinație. Cheile trebuie să fie arbitrare, dar șiruri unice.