Como saber o número de elementos em Perl matriz

Tarefa. No código Perl do programa, há uma série de @arr (para as três primeiras letras da palavra "array"). Nessa matriz, tem algum valor. Precisa de saber o quanto esse array contém elementos.

Existem várias maneiras de resolver esta tarefa.

Usar o quantum contexto

Se usar a matriz скалярном contexto, este valor é o número de elementos na matriz:

my $number_of_elements = scalar(@arr);

Exemplo de programa:

▶ Run
#!/usr/bin/perl

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

print scalar(@arr);

O programa apresenta o número 3.

Quantum contexto pode-se obter não só com o scalar(), mas também com qualquer tipo de operação aritmética, que não muda de número, por exemplo, acrescentar/tirar zero ou multiplicar/dividir por unidade:

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

Usar uma variável com o índice do último elemento de

Outra forma de descobrir o comprimento do array é usar a variável, que está relacionado com este array e que contém o número do último item. Se a matriz é chamado de @arr, essa variável será chamado $#arr. O primeiro item em Perl matriz tem o número 0, de modo que para obter o número de elementos necessário para esta variável, acrescentar 1.

my $number_of_elements = $#arr + 1;

Como são considerados elementos diferentes e undef

Não importa quais os valores contidos na matriz. Lá podem ser simples como strings e números e estruturas complexas.

Se a matriz contém o valor undef, então eles também são considerados. Aqui está um exemplo de uma matriz na qual estão item 4:

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

A maneira errada de contagem — usar length()

Aqui está um exemplo de um programa. O programa exibe o número 1 e pode ser incorreto supor que length() aplicado a uma matriz e retorna o número de itens.

▶ Run
#!/usr/bin/perl

my @arr = ('one');

print length(@arr);

Mas essa suposição incorreta. Para ver isso, é possível verificar que para a matriz my @arr = ('one', 'two', 'three') length()assim retornará 1.

length() é aplicada à matriz não retorna o número de itens e o número de dígitos no número de elementos. Se a matriz contém 9 ou menos elementos, então length(@arr) retornará 1 se a matriz contém de 10 a 99 de elementos, length(@arr) retornará 2 e assim por diante.

Temas relacionados

Outros artigos