Hvordan til at få adgang til array-elementet i Perl

Opgave. I Perl, programmet har en bred vifte. Du er nødt til at læse værdien af en af array-elementer.

Her er et eksempel på, hvordan man gør det:

▶ Run
#!/usr/bin/perl

my @arr = ('one', 'two', 'three');

print $arr[1];

Hvis du gemmer teksten i dette program i en fil script.pl og køre perl script.pl, vil skærmen vises teksten two.

Så, hvad sker der her.

For det første, har vi skabt et array ved navn @arr. Variabel-en array, der begynder med de tegn, @, dette symbol er magen til den første et brev fra ordet "array". Vi har skabt et array, og er placeret på 3 af varen. I vores eksempel, at alle 3 elementer er line, men alle i et enkelt array kan indeholde elementer af meget forskellige typer, fx, strenge, tal og referencer.

Hvert element i arrayet har sit eget serienummer. Dette nummer kaldes "index". I et programmeringssprog Perl og mange andre programmeringssprog elementerne i arrayet være nummereret begyndende med nummer 0. I eksemplet i array indeholder 3 elementer:

  • string 'one' er den array-element med indeks 0
  • string 'two' er den array-element med indeks 1
  • string 'three' er array-element med indeks 2

For at få adgang til array-element med indeks 1 er du nødt til at skrive $arr[1]. Skriv navnet på den matrix, og torv parentes skrive indeks af de punkter, som vi ønsker at hente. Bemærk én funktion. Når vi tænder et element i arrayet, i stedet for et symbol @ i navnet på den array, du har brug for at skrive det symbol, $ (dollar-tegn, symbol er magen til den første bogstav i ordet "skalar"). Ideen var, at med sådanne plader, kan vi klart understrege, at vi er nødt til at få en værdi, men, efter min mening, dette er en design-fejl sprog. Det gør ikke forenkle, men tværtimod gjort det endnu mere vanskeligt. I et programmeringssprog, Perl6 er fast, men i Perl5, når du besøger array-element, du nødt til at bruge dollar tegn $: $arr[1].

Se sidste element i array

Når du opretter et array @arr vises automatisk variabel $#arr , der indeholder indekset i de sidste element. Når tilføje/fjerne elementer fra array til variabel ændres automatisk (og selv du kan eje registrere antallet af denne variabel).

For at få adgang til de sidste element i arrayet, som du kan bruge optagelsen $arr[$#arr]. Men lettere brug $arr[-1]. Indeks -1 betyder, at indekset for det sidste element i array, indeks -2 — den næstsidste osv.

Forkert måde

Her er den kode (omhyggeligt, dette indeholder de fejl):

▶ Run
#!/usr/bin/perl

my @arr = ('one', 'two', 'three');

print @arr[1]; # error

Denne mulighed er lige så korrekt, men i stedet rette til at få adgang til et element i arrayet ved hjælp af $arr[1]her anvendes @arr[1].

Hvis du gemmer teksten i dette program i en fil script.pl og køre det perl script.pl, vil skærmen være tekst two. String 'two', dette er faktisk det element, index 1 i array @arr, så ved første øjekast, at den fejl ikke er synlig.

Men hvis du tilføjer et program kode linje use warnings; (som er næsten altid værd at gøre), så vil output blive synlig advarsel:

Scalar value @arr[1] better written as $arr[1] at script.pl line 7.
two

Form @arr[ ] — er at få flere værdier fra matrixen. Det hedder "cut". Et par eksempler:

  • @arr[1,2] — returnerer en liste med to elementer, array-elementer med indeks 1 og 2
  • @arr[0..2] — returnerer en liste med tre elementer, array-elementer med indeks 0, 1 og 2
  • @arr[1, 1] — returnerer en liste med to elementer, gentager element på index 1 to gange

Indlæg @arr[1] — returnerer en liste af ét element, plus en advarsel.

Indlæg @arr[1,] — returnerer en liste af et element uden advarsel.

Hvis du har brug for værdien af et element i arrayet, det er bedre at skrive $arr[1].

Relaterede emner

Andre artikler