ActivePerl variabeltyper og kontekst Grunnleggende ActivePerl - Del 11 Innledning Dette er en del 11 av serien min, Grunnleggende om ActivePerl. I denne delen av serien ser vi på det som kalles ActivePerl datatyper og hva kalles også skalar sammenheng og listen sammenheng. 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. Den datatyper Perl har tre innebygde datatyper, som kalles skalarene, arrays og hashes.
Betydning av en skalar Enkelt sagt, er en skalar en streng eller et nummer. Enhver variabel som identifiserer en skalar begynner med $. En skalar er hva vi har vært å henvise til som en enkel verdi. Eksempel min $ var; $ var = "tekst eller et tall uten anførselstegn"; Vi har sett mange eksempler på skalar. Betydning av en Array En matrise er en ordnet liste over scalars. Vi har sett eksempler på dette. Enhver variabel som identifiserer en rekke må begynne med @. Betydning av Hash En hash er en uordnet liste over scalars.
En hovedforskjell mellom en hash og en matrise, er at verdiene av hash er indeksert av tilhørende strengnøkler, mens verdiene av en matrise indeksert av tall. Enhver variabel som identifiserer en hash begynner med%. Vi har sett eksempler på hashes. Gyldig variabel navn fra ovennevnte ser vi at en variabel begynner med heller, $, @ eller%. Etter det bør du ha en bokstav eller understrek. Etter det, kan du ha en rekke understrek, bokstaver eller tall i vilkårlig rekkefølge, for å danne variabelnavnet. Liste En liste er en samling av scalars adskilt med komma, avgrenset av parenteser.
Et eksempel er: ("den første", "den andre", 3) Det er tre scalars ute: to strenger og ett nummer. Du kan ha lister på begge sider av oppdraget operatør. Vurdere følgende linje: (min $ en, min $ to, min $ tre) = ("den første", "den andre", 3); Det er to lister her: en på venstre side av oppdraget operatør og den andre på høyre side av oppdraget operatør. Jeg vilje er gjort begge listene til å ha tre scalars hver. Listen til høyre har reelle skalarer. Den til venstre har, men variabler. Hver av variablene for listen til venstre, vil holde den tilsvarende skalar fra listen til høyre.
Jeg håper du setter pris på betydningen av listen i ActivePerl. Les og prøv følgende kode: bruke strenge; print "Content-Type: text /html \\ n \\ n"; (min $ en, min $ to, min $ tre) = ("den første", "den andre", 3); print $ en; print "print $ to; print" print $ tre, print "Du bør ha de tre skalare verdier vises en liste kan tildeles til en annen liste med tilsvarende variabler som vist ovenfor imidlertid en liste kan også tildeles en matrise som vist i følgende kode (lese og prøve det)..
: bruke strenge; skrive ut "Content-Type: text /html \\ n \\ n"; minarr = ("den første", "den andre", 3); printarr; Denne metoden for å tildele en liste er å foretrekke, da du vet ikke antall elementer i listen, eller når listen er veldig lang Argumenter til en funksjon Vi har sett utskriftsfunksjonen I den første kodeeksemplet ovenfor, har vi skriver ut $ én,.. Det kan også være "print ($ én), "men brakettene er vanligvis utelatt I en av de foregående kapitlene så vi noe sånt som: push (hisArr, (." xxx "," yyy "," zzz ")); Den er push-funksjonen for matrisen. Det har også parentes.
Konsollene har elementer inne. Her har jeg nevnt utskrifts og push-funksjoner. Alle hva du har inne i parentes av en funksjon som i de to ovennevnte tilfellene, kalles argumenter. I tilfelle av trykk ovenfor, er argumentet $ en, noe som er en skalar. I tilfelle av trykk argumentene erhisArr og ("XXX", "yyy", "zzz"). Disse to argumentene er lister. En rekke er en ordnet liste, og det er det første argumentet. Det andre argumentet er en bokstavelig liste. De ytterste braketter for argumentene til en funksjon kan utelates.
Skalar Context Hvis noen operasjon ville returnere en skalar eller ville ha en skalar som argument, sier vi ActivePerl jobber i en skalar sammenheng på det tidspunktet. Tenk deg følgende eksempel: min $ var = "strengen"; Dette er en veldig enkel setning, og det er skalar sammenheng, som vi har å gjøre med scalars på hver side av oppdraget operatør. Vurdere følgende. print ($ en); Argumentet for utskriftsfunksjonen er en skalar, så det er en skalar sammenheng.
Liste Context Hvis noen operasjon vil returnere en liste eller ville ha en liste som argument, sier vi ActivePerl arbeider i en liste sammenheng på det tidspunktet. Tenk deg følgende eksempel: (min $ en, min $ to, min $ tre) = ("den første", "den andre", 3); På hver side av oppdraget operatør, har vi en liste, slik at vi har en liste sammenheng. Tenk på følgende: push (hisArr, ("xxx", "yyy", "zzz")); De to argumentene til push-funksjonen er lister, så vi har en liste sammenheng. I noen tilfeller argumentene a funksjoner kan bestå av skalarene og listen.
I så fall ActivePerl jobber på begge sammenhenger. Merk: hash er en slags liste. Betinget Kontekst Avhengig av forholdene, kan du jobbe i en skalar eller liste sammenheng. Som du lærer ActivePerl, blir du fortalt disse forholdene. Jeg vil gi noen eksempler her. Tenk på følgende rekke: minarr = ("HBWE", "FGTR", "HTNK", 4587, 4526, 4053, "AB12", "GB58", "TG45", "RE69"); Etter at matrisen er blitt opprettet, ville dens matrise variabel opptre som en operasjon og vil returnere enten lengde (skalar) i matrisen eller en liste av elementene i matrisen, avhengig av om den er tildelt en skalar eller matrise ( liste).
Når den returnerer en skalar, jobber du i en skalar sammenheng. Når den returnerer en liste, jobber du i en liste sammenheng. I det følgende kode matrisen variabel er tildelt til en skalar, slik at det gir lengden av rekken (det er hvordan ActivePerl har blitt gjort for å være - å returnere en skalar av matrise variabel når tilordnet en skalar). Les og prøv koden.
bruke strenge; print "Content-Type: text /html \\ n \\ n"; minarr = ("HBWE", "FGTR", "HTNK", 4587, 4526, 4053, "AB12", "GB58", "TG45", "RE69"); min $ scal =arr; print $ scal; I det følgende kode matrisen variabel er tildelt til en liste, slik at den returnerer en liste over elementer i gruppen (det vil si hvordan ActivePerl har blitt gjort for å være). Les og prøv koden.
bruke strenge; print "Content-Type: text /html \\ n \\ n"; minarr = ("HBWE", "FGTR", "HTNK", 4587, 4526, 4053, "AB12", "GB58", "TG45", "RE69"); li =arr min; skrive utli; Hash nøkler og verdier funksjoner revisited I Perl eller ActivePerl spesifikasjonen, er det sagt at hasj nøkler funksjonen vil returnere en liste over alle nøklene i hasj hvis arbeider i listen kontekst eller det ville returnere antall nøkler i hash hvis arbeidet i skalar sammenheng. Så i listen sammenheng returnerer den en liste; i skalar sammenheng returnerer den en skalar (nummer).
Dette betyr at hvis du tilordner returverdien av funksjonen til en matrise, har du en liste; Hvis du tilordne den til en skalar du har en skalar. Les og prøv følgende kode der tastene funksjonen er på listen sammenheng, returnerer en liste fordi den returnerte verdien er tildelt en matrise. bruke strenge; print "Content-Type: text /html \\ n \\ n"; min% fruitColor = (Apple => "lilla", Banana => "gul", Pear => "grønn", Lemon => "grønn"); minear = nøkler (% fruitColor); skrive utar; Les og prøv følgende kode der tastene funksjonen er i skalar sammenheng, tilbake en skalar fordi den returnerte verdien er tildelt en skalar.
bruke strenge; print "Content-Type: text /html \\ n \\ n"; min% fruitColor = (Apple => "lilla", Banana => "gul", Pear => "grønn", Lemon =>