ActivePerl hashes Grunnleggende ActivePerl - Del 10 Innledning Dette er del 10 av min serie, Grunnleggende om ActivePerl. En hash er som en matrise, men ikke akkurat det samme. I denne delen av opplæringen ser vi på hash av ActivePerl. Merk: Hvis du ikke kan se koden, eller hvis du tror noe mangler (ødelagt kobling, bilde fraværende), bare kontakte meg på [email protected]. Det er, kontakt meg for den minste problemet du har om hva du leser.
En Hash Content Eksempel Følgende liste viser noen frukter og deres farger: Apple => lilla Banana => gul Pear => grønn Lemon => grønn I listen ser vi at eple er lilla, er banan gul, etc. => tegn bare viser at elementet på venstre tilsvarer elementet på høyre side. Dette er en hash-listen. La oss se på et typisk utvalg liste; en liste på fornavn med noen ansatte i et firma: 0 John 1 Mary 2 Peter 3 Augustine 4 Angela 5 Susan 6 Martin I rekken listen den første kolonnen må alltid være indekser; mens den andre kolonnen kan ha tall eller strenger.
I en hash listen er den første kolonnen ikke nødvendigvis indekser; det kan bestå av tall og /eller strenger; den andre kolonnen kan også bestå av tall og /eller strenger. Forskjellen mellom en hash liste og en rekke listen er at for en rekke liste den første kolonnen består alltid av indekser (telle tall fra null), men for en hash liste den første kolonnen kan være tall og /eller strenger. Den andre kolonnen for en matrise eller hash listen kan være noe (tall og /eller strenger).
For de to ovennevnte eksemplene, har hash liste strenger for den første kolonnen og rekken listen har sin ubetingede indekser. Resten av denne opplæringen vil omhandle hashes. Opprette en Hash Syntaksen for å lage en hash er: mitt% hashName = (nøkkel1 => verdi1, NØKKEL2 => verdi2, TAST3 => basis3, ...); Du begynner med det reserverte ordet, min, deretter et mellomrom. Neste du har symbolet%, etterfulgt av navnet på hasj. Hash foran navnet% er hash variabel. Etter at du har oppdraget operatør. Da har du en liste hash i parentes (i parentes).
Ser på hash eksempelet ovenfor, er den første kolonnen som heter nøklene; den andre kolonnen kalles verdiene. Du skriver dem som sådan i parentesen. Hver hash element inne i parentesene begynner med nøkkelen, etterfulgt av => egnet (dvs. likhetstegnet etterfulgt av større enn tegnet), og den tilsvarende verdi. Før du skriver det neste elementet, må du skrive inn et komma først. Naturligvis har det siste elementet ikke har et komma før den avsluttende parentes. Vel, etter den avsluttende parentes du har semikolon; som indikerer slutten av en ActivePerl setningen.
Hvis verdien er en streng den er skrevet i parentes i anførselstegn (enkle eller doble). Hvis verdien er et tall, er det ikke skrevet i anførselstegn. Du kan oppgi navn, fruitColor frukten eksempelet ovenfor. Følgende uttalelse skaper hash i ActivePerl: my% fruitColor = (Apple => "lilla", Banana => "gul", Pear => "grønn", Lemon => "grønn"); Merk at i parentes nøklene ikke er i anførselstegn.
Ovennevnte uttalelse kan skrives i koden din pent som følger: min% fruitColor = (Apple => "lilla", Banana => "gul", Pear => "grønn", Lemon => "grønn"); Få tilgang til en hash-verdi Syntaksen tilgang til en hash-verdi er: $ hashName {'key'} Du begynner med en $ symbol, etterfulgt av hash navn, og deretter et par klammeparentes. Inne i klammeparentes, har du nøkkelen (i enkle eller doble anførselstegn) av tilsvarende verdi. Så for å få tilgang til den lilla streng ovenfor, du ville skrive: $ fruitColor {'Apple'} I dette uttrykket nøkkelen må være i anførselstegn, (enkel eller dobbel).
Men når du oppretter hash nøklene ikke er i anførselstegn. Dette uttrykket returnerer den tilsvarende verdi for nøkkelen. Endre en hash-verdi Du bruker uttrykket ovenfor for å endre en hash-verdi som følger: $ hashName {'key'} = nyVerdi; Så for å endre fargen på eplet i hash fra lilla til rødt, skriver du: $ fruitColor {'Apple'} = "red"; Les og prøv følgende kode, der den første fargen for apple vises og deretter endret og gjen vises.
bruke strenge; print "Content-Type: text /html \\ n \\ n"; min% fruitColor = (Apple => "lilla", Banana => "gul", Pear => "grønn", Lemon => "grønn"); print $ fruitColor {'Apple'}; skrive "$ fruitColor {'Apple'} =" red "; print $ fruitColor {'Apple'};. Tilgang med en variabel i stedet for en knapp Du kan få tilgang til en verdi med en variabel i stedet for en nøkkel Følgende kode segment illustrerer dette: min $ herKey = 'Apple'; print $ fruitColor {$ herKey}; hash funksjoner The Hash har fungerer like rekken har funksjoner vi se på noen hash funksjoner nedenfor hver funksjon Syntaksen til å bruke hver funksjon.
. er: hver (% HashName) Dette uttrykket returnerer enten neste nøkkel /verdi-par eller den neste tasten avhengig av det som kalles listen kontekst eller skalar sammenheng I vår koden under det neste nøkkel /verdi-par som vil bli returnert.. I koden nedenfor, jeg bruker hasj ovenfor med fire elementer Så hvis du bruker de hver funksjons fire ganger du vil ha fire forskjellige nøkkel /verdi-par Les og prøv følgende kode: bruke strenge; skrive ut "Content-Type..
: text /html \\ n \\ n "; min% fruitColor = (Apple =>" lilla ", Banana =>" gul ", Pear =>" grønn ", Lemon =>" grønn "); skrive ut hver (% fruitColor); print "print hver (% fruitColor); print" print hver (% fruitColor); print "print hver (% fruitColor); print" Etter min datamaskin jeg hadde følgende resultat: Bananayellow Applepurple sitron Peargreen Vel, nøkkelen og verdi for hvert par er ikke skilt; la oss ikke bekymre deg for det for nå. Rekkefølgen av nøkkel /verdi-parene ikke er den samme rekkefølgen som vi skrev dem i hasj. Bare merk at denne bestillingen ikke kan forutbestemt.
Så hver funksjon kommer tilbake neste nøkkel /verdi-par under visse betingelser. Det begynner med det den anser som den første, så hvis det blir kalt igjen, returnerer hva den anser som den neste, og så videre. Du ActivePerl programmerer kan ikke vite i hvilken rekkefølge elementene vil bli returnert. Tastene fungerer Syntaksen til nøkler funksjonen er: taster (% hashName) Den returnerer en liste (som kan bli holdt av en matrise) av alle nøklene i en hash.
Les og prøv følgende kode: bruke strenge; print "Content-Type: text /html \\ n \\ n"; min% fruitColor = (Apple => "lilla", Banana => "gul", Pear => "grønn", Lemon => "grønn"); minearr = nøkler (% fruitColor); skrive utarr; Rekkefølgen på retur nøklene igjen er ikke forhåndsbestemt (ikke måten de ble skrevet). Verdiene Funksjon Syntaksen for verdier funksjonen er: verdier (% hashName) Verdiene funksjonen oppfører seg på samme måte som tastene funksjon bortsett fra at den returnerer en liste over verdiene i hasj og ikke en liste av nøklene.
Les og prøv følgende kode: bruke strenge; print "Content-Type: text /html \\ n \\ n"; min% fruitColor = (Apple => "lilla", Banana => "gul", Pear => "grønn", Lemon =>