Jak sprawdzić ilość elementów w tablicy Perl

Zadanie. W kodzie programu Perl jest tablica @arr (trzy pierwsze litery od słów "array"). W tej tablicy są jakieś wartości. Chcesz dowiedzieć się, ile w tej tablicy zawiera elementów.

Istnieje kilka sposobów, aby rozwiązać to zadanie.

Używać скалярный kontekst

Jeśli użyć tablicy w скалярном kontekście, to wartość ta będzie ilość elementów w tablicy:

my $number_of_elements = scalar(@arr);

Przykład programu:

▶ Run
#!/usr/bin/perl

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

print scalar(@arr);

Program wyświetla liczbę 3.

Скалярный kontekst można uzyskać nie tylko za pomocą scalar(), ale i za pomocą jakiejś operacji arytmetycznej, która nie zmienia liczbę, na przykład, dodać/odjąć zero lub pomnożyć/podzielić na jednostkę:

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

Użyć zmiennej z indeksem ostatniego elementu

Innym sposobem, aby dowiedzieć się długości tablicy — to użyć zmiennej, która wiąże się z tą tablicą i w którym zawiera numer ostatniego elementu. Jeśli tablica nazywa @arr, to zmienna będzie się nazywać $#arr. Pierwszy element w Perl tablicy ma numer 0, tak aby uzyskać liczbę elementów, trzeba do tej zmiennej dodać 1.

my $number_of_elements = $#arr + 1;

Jak są uważane za różne elementy i undef

Zupełnie nie ważne jakie wartości znajdują się w tablicy. Tam mogą być zarówno proste polecenia i liczby, jak i złożone struktury.

Jeśli w tablicy zawiera wartość undef, to one też się liczą. Oto przykład tablicy w którym znajdują się 4 elementy:

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

Niewłaściwy sposób liczenia — używać length()

Oto przykład programu. Program wyświetla liczbę 1 i można źle założyć, że length() zastosowany do tablicy zwraca liczbę elementów w nim.

▶ Run
#!/usr/bin/perl

my @arr = ('one');

print length(@arr);

Ale to błędne założenie. Aby się o tym przekonać można sprawdzić, że dla tablicy my @arr = ('one', 'two', 'three') length()tak samo zwróci 1.

length() zastosowane do tablicy nie zwraca liczbę elementów, a liczba cyfr w liczbie elementów. Jeśli w tablicy zawiera 9 lub mniej elementów, to length(@arr) zwraca 1, jeśli w tablicy zawiera od 10 do 99 elementów, to length(@arr) przywróci 2 i tak dalej.

Tematy pokrewne

Inne artykuły