Hvor mange elementer i Perl array

Opgave. I koden for Perl-programmet har en bred vifte @arr (de tre første bogstaver fra ordet "array"). I dette array har nogle værdier. Har brug for at vide, hvor mange i dette array indeholder elementer.

Der er flere måder at løse dette problem.

Brug skalar sammenhæng

Hvis du bruger array i skalar sammenhæng, så denne værdi vil være antallet af elementer i arrayet:

my $number_of_elements = scalar(@arr);

Eksempel på program:

▶ Run
#!/usr/bin/perl

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

print scalar(@arr);

Programmet viser nummer 3.

Skalar sammenhæng kan opnås ikke kun ved hjælp af scalar(), men med hjælp af nogle aritmetiske operationer, som ikke ændrer nummeret, for eksempel til at tilføje/minus nul eller formere/opdele enhed:

my $number1 = @arr + 0;
my $number2 = @arr - 0;
my $number3 = @arr * 1;
my $number4 = @arr / 1;

Til at bruge en variabel med indekset på den sidste element

En anden måde at finde ud af længden af array er at bruge en variabel, der er forbundet med array, og som indeholder oplysninger om antallet af de sidste element. Hvis det array kaldes @arr, en sådan variabel vil blive kaldt $#arr. Det første element i et Perl-array har nummer 0, så for at få antallet af emner, du har brug for at tilføje denne variabel til 1.

my $number_of_elements = $#arr + 1;

Hvordan at tælle forskellige elementer og undef

Det betyder ikke noget, hvilke værdier der er indeholdt i array. Der kan være enkle, strenge og tal og komplekse strukturer.

Hvis det array, der indeholder den værdi, undef, så de også er. Her er et eksempel på et array, som indeholder 4 elementer:

my @arr = (1, undef, 3, undef);

Forkert måde at tælle på, er at bruge længde()

Her er en prøve på programmet. Programmet viser nummer 1, og kan fejlagtigt antage, at length() anvendes til en bred vifte returnerer antallet af elementer i det.

▶ Run
#!/usr/bin/perl

my @arr = ('one');

print length(@arr);

Men det er en forkert antagelse. For at kontrollere dette, kan du kontrollere, at for en række my @arr = ('one', 'two', 'three') length()vil vende tilbage 1.

length() anvendes til array returnere antallet af elementer og antallet af cifre i antallet af elementer. Hvis det array indeholder 9 eller færre elementer, så length(@arr) vil vende tilbage 1, hvis det array, der indeholder fra 10 til 99 elementer, length(@arr) vil vende tilbage 2, og så videre.

Relaterede emner

Andre artikler