Wie erfahre ich die Anzahl der Elemente in Perl-array

Aufgabe. Im Code Perl Programm haben eine Reihe von @arr (die ersten drei Buchstaben von dem Wort "array"). In diesem array irgendwelche Werte. Sie wissen, wie viele in diesem array Elemente enthält.

Es gibt mehrere Möglichkeiten, diese Aufgabe zu lösen.

Verwenden Skalare Kontext

Wenn Sie ein array im skalarkontext, dann ist es Wert und gerade wird die Anzahl der Elemente im array:

my $number_of_elements = scalar(@arr);

Beispielprogramm:

▶ Run
#!/usr/bin/perl

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

print scalar(@arr);

Das Programm zeigt die Zahl 3.

Skalare Kontext kann man nicht nur mit dem scalar(), sondern irgendeine Rechenoperation, das ändert nichts an der Zahl, Z. B. hinzufügen/wegnehmen null oder multiplizieren/dividieren pro Einheit:

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

Verwenden Sie die Variable mit dem index des letzten Elements

Ein anderer Weg, um herauszufinden, die Länge des Arrays ist eine Variable verwenden, die in Zusammenhang mit diesem array und enthält die Nummer des letzten Elements. Wenn das array heißt @arr, dann wird diese Variable aufgerufen werden $#arr. Das erste Element im array in Perl hat die Nummer 0, also um die Anzahl der Elemente, müssen Sie diese Variable addiere 1.

my $number_of_elements = $#arr + 1;

Wie werden verschiedene Elemente und undef

Ganz egal welche Werte sind im array enthalten. Es kann als einfache Strings und zahlen, als auch komplexe Strukturen.

Wenn im array enthält den Wert undef, dann werden Sie mitgezählt. Hier ist ein Beispiel-array in dem sich die 4 Elemente:

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

Falsche Methode der Zählung — nutzen Sie die length()

Hier ist ein Beispiel des Programms. Das Programm zeigt die Zahl 1 und falsch anzunehmen, dass length() wird zu einem array gibt die Anzahl der Elemente in ihm.

▶ Run
#!/usr/bin/perl

my @arr = ('one');

print length(@arr);

Aber es ist eine falsche Annahme. Um dies zu überprüfen können Sie überprüfen, dass für das array my @arr = ('one', 'two', 'three') length()so 1 zurück.

length() angewandt auf den array gibt nicht die Anzahl der Elemente und die Anzahl der Ziffern in der Zahl der Elemente. Wenn im array enthält 9 oder weniger Einträge vorhanden, werden length(@arr) gibt 1 zurück, wenn im array enthält 10 bis 99 Elemente, length(@arr) 2 zurück und so weiter.

Verwandte Themen

Andere Artikel