Comment savoir le nombre d'éléments dans un tableau Perl

De la tâche. Dans le code Perl programme, il ya un tableau de @arr (les trois premières lettres du mot "array"). Dans ce tableau ont des valeurs. Besoin de savoir combien dans ce tableau contient des éléments.

Il ya plusieurs façons de résoudre ce problème.

Utiliser un contexte scalaire

Si utiliser un tableau dans скалярном le contexte, c'est la valeur qu'à être le nombre d'éléments dans le tableau:

my $number_of_elements = scalar(@arr);

Exemple de programme:

▶ Run
#!/usr/bin/perl

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

print scalar(@arr);

Le programme affiche le nombre de 3.

Scalaire contexte, vous pouvez obtenir non seulement avec l'aide de scalar(), mais avec quelque chose en plus, l'opération arithmétique, ce qui ne change pas le nombre, par exemple, d'ajouter/enlever un zéro ou de multiplier/diviser par unité:

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

Utiliser une variable avec l'index du dernier élément

Une autre façon de déterminer la longueur du tableau est d'utiliser une variable qui est associée à ce tableau et qui contient le numéro du dernier élément. Si le tableau est appelé à @arr, cette variable sera appelé $#arr. Le premier élément en Perl tableau porte le numéro 0, de sorte que pour obtenir le nombre d'éléments, vous avez besoin de cette variable ajouter 1.

my $number_of_elements = $#arr + 1;

Comment sont considérés comme différents éléments et undef

N'importe quelles valeurs contenues dans le tableau. Il ya peut-être comme une simple chaîne de caractères et des nombres, et des structures complexes.

Si le tableau contient la valeur undef, ils sont également considérés. Voici un exemple d'un tableau dans lequel se trouvent les 4 éléments:

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

La mauvaise méthode de calcul — utiliser length()

Voici un exemple de programme. Le programme affiche le nombre de 1 et peut être faux de supposer que length() appliqué à un tableau et renvoie le nombre d'éléments qu'il contient.

▶ Run
#!/usr/bin/perl

my @arr = ('one');

print length(@arr);

Mais c'est une hypothèse erronée. Pour le vérifier, vous pouvez vérifier que pour le tableau my @arr = ('one', 'two', 'three') length()tout retourne 1.

length() appliquée à un tableau renvoie le nombre d'éléments et le nombre de chiffres dans le nombre d'éléments. Si le tableau contient 9 ou moins d'éléments, length(@arr) retourne 1 si le tableau contient de 10 à 99 éléments, length(@arr) sera de retour 2 et ainsi de suite.

Thèmes connexes

Autres articles