Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > foreach - предыдущий элемент


Автор: shuttle 14.6.2011, 12:07
использую foreach для перебора массива и вот понадобился предыдущий элемент - как получить? 
или использовать for?

Автор: afiskon 14.6.2011, 12:52
Код

my $prev = undef;
for my $curr(@array) {
  # $curr - текущий элемент, $prev - предыдущий
  # ...
  $prev = $curr;
}

Автор: Suppir 14.6.2011, 13:12
Аналогично делается, когда мы перебираем строки в файле с помощью while(<IN>) и нужно получить "предыдущую строку":

Код

open(IN, "file.txt");
while(<IN>){
   if (/условие в текущей строке/ && $prev=~ /условие в предыдущей строке/){do_smth()}
   $prev = $_;
}

Автор: gcc 14.6.2011, 13:18
Код

foreach (0..$#array) {
   print $array[$_-1]."\n";
}

Автор: afiskon 14.6.2011, 13:21
Цитата(gcc @ 14.6.2011,  13:18)
Код

foreach (0..$#array) {
   print $array[$_-1]."\n";
}

для цикла типа for my $k(keys %h) такое будет сложновато использовать. Правда, в моем случае для доступа к предыдущему элементу на запись нужно поиграться с ссылками.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)