Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> foreach - предыдущий элемент 
:(
    Опции темы
shuttle
Дата 14.6.2011, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 9.4.2008

Репутация: нет
Всего: нет



использую foreach для перебора массива и вот понадобился предыдущий элемент - как получить? 
или использовать for?
--------------------
PM MAIL   Вверх
afiskon
Дата 14.6.2011, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 31.3.2011
Где: Россия, Москва

Репутация: нет
Всего: 4



Код

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

PM MAIL WWW   Вверх
Suppir
Дата 14.6.2011, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 588
Регистрация: 20.4.2009

Репутация: нет
Всего: нет



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

Код

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


Это сообщение отредактировал(а) Suppir - 14.6.2011, 13:13
PM MAIL   Вверх
gcc
Дата 14.6.2011, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



Код

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

PM WWW ICQ Skype GTalk Jabber   Вверх
afiskon
Дата 14.6.2011, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 31.3.2011
Где: Россия, Москва

Репутация: нет
Всего: 4



Цитата(gcc @ 14.6.2011,  13:18)
Код

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

для цикла типа for my $k(keys %h) такое будет сложновато использовать. Правда, в моем случае для доступа к предыдущему элементу на запись нужно поиграться с ссылками.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0736 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.