Отслеживание количества элементов в массиве повторяется?
Есть ли способ, которым количество элементов, повторяемых в цикле for, можно отследить в perl: Как с помощью специальных переменных:
@arrayElements = (2,3,4,5,6,7,67);
foreach (@arrayElements) {
# Do something
# Want to know how may elements been iterated after
# some n number of elements processed without using another variable.
}
3 ответа
Решение
В Perl5 v12 и более поздних версиях вы можете использовать each
итератор:
while(my($index, $element) = each @array_elements) {
...;
}
Однако более переносимым решением является итерация по индексам и ручный доступ к элементу, как показано ysth.
В любом случае количество посещенных элементов (включая текущий элемент) равно $index + 1
,
Либо просто посчитайте, как вы идете:
my $processed = 0;
foreach my $element (@array_elements) {
...
++$processed;
}
или вместо этого переберите индексы:
foreach my $index (0..$#array_elements) {
my $element = $array_elements[$index];
...
}
Вы можете получить количество элементов в массиве как
my $num = @arrayElements;
print $num;
ИЛИ ЖЕ
my $num = scalar (@arrayElements);
print $num;
ИЛИ ЖЕ
my $num = $#arrayElements + 1;
print $num;
И для нахождения количества повторяющихся элементов мы можем использовать следующий код:
my $count = 0; #initially set the count to 0
foreach my $index(@arrayElements)
{
$count++;
}
print $count;