Автор Тема: Как выдти из цикла.  (Прочитано 7776 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн HTML2K

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 32
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.butovo.ru
Как выдти из цикла.
« : 16 Марта 2002, 00:51:46 »
Есть цикл for (....) {}
Нужно из него просто выдти. Чтонибуть типа end for; или exit for; Есть в перле чтонибуть похожее?
Есть люди, а есть программеры.

Оффлайн YA

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 597
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как выдти из цикла.
« Ответ #1 : 16 Марта 2002, 00:59:46 »
Цитировать
Есть в перле чтонибуть похожее?

Есть: last

METKA: for (...)
{
...
last METKA if ...;
...
}
Литературный перевод с русского и английского на Perl. Дорого!

Оффлайн HTML2K

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 32
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.butovo.ru
Как выдти из цикла.
« Ответ #2 : 16 Марта 2002, 01:02:14 »
Но это тоже самое goto; а именно не переход куданибуть, а выход из цикла
Есть люди, а есть программеры.

Оффлайн YA

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 597
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как выдти из цикла.
« Ответ #3 : 16 Марта 2002, 01:44:16 »
goto в перле тоже есть, но его использование не приветствуется (да оно и не надо вовсе). А last можешь использовать и без метки.

См. также:
next - переход к следущей итерации;
redo - возврат к началу текущей итерации.
Литературный перевод с русского и английского на Perl. Дорого!

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
Как выдти из цикла.
« Ответ #4 : 16 Марта 2002, 02:35:11 »
Цитировать
можешь использовать и без метки.

например:

my $time=time();
while (1){
last if (time-$time)>15;
}
#через 15 сек. выйдет из цикла
 в исканиях.

Оффлайн HTML2K

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 32
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.butovo.ru
Как выдти из цикла.
« Ответ #5 : 16 Марта 2002, 04:04:23 »
А

my $time=time();
while (1){
last if (time-$time)>0;
}

Сразу выдет из цикла ?
Есть люди, а есть программеры.

Оффлайн YA

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 597
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как выдти из цикла.
« Ответ #6 : 16 Марта 2002, 11:00:09 »
Цитировать
А

my $time=time();
while (1){
last if (time-$time)>0;
}

Сразу выдет из цикла ?

Нет не сразу, а именно через секунду (пройдет как минимум одна интерация).

А если написать ">=0", то выйдет обязательно из первой интерации.
Литературный перевод с русского и английского на Perl. Дорого!

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
Как выдти из цикла.
« Ответ #7 : 16 Марта 2002, 14:42:16 »
Цитировать
Нет не сразу, а именно через секунду (пройдет как минимум одна интерация).

не через секунду, а через одну итерацию ;) у меня за 5 сек, там несколько тысяч набежало.
Для видимости поставьте счетчик:

my $time=time();
while (1){
last if (time-$time)>0;
$i++;
}
print "Кол-во итераций: $i";
 в исканиях.

Оффлайн YA

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 597
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как выдти из цикла.
« Ответ #8 : 16 Марта 2002, 15:57:47 »
Green Kakadu
Разве я не правильно ответил на вопрос?
Цитировать
пройдет как минимум одна итерация

Т.е. столько, сколько успеет за первую секунду.
Литературный перевод с русского и английского на Perl. Дорого!

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
Как выдти из цикла.
« Ответ #9 : 16 Марта 2002, 17:40:15 »
Цитировать
Разве я не правильно ответил на вопрос?

угу, за секунду ;) я стормозил :)
 в исканиях.

Оффлайн HTML2K

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 32
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.butovo.ru
Как выдти из цикла.
« Ответ #10 : 16 Марта 2002, 20:00:37 »
А если сделать так:

sub exitif {
my $time=time();
while (1){
last if (time-$time)>=0;
}
}

то вызов подпрограммы &exitif; будет выходом из любого if ???
Есть люди, а есть программеры.

Оффлайн YA

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 597
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как выдти из цикла.
« Ответ #11 : 16 Марта 2002, 21:19:13 »
Что значит
Цитировать
будет выходом из любого if
?
Цикл завершится на первой же итерации. Тут же завершится подпрограмма (если в ней больше ничего нет). И все! :)

Ты лучше напиши, что хочешь сделать.
А еще лучше переходи в форум "Perl".
Литературный перевод с русского и английского на Perl. Дорого!

Оффлайн HTML2K

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 32
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.butovo.ru
Как выдти из цикла.
« Ответ #12 : 16 Марта 2002, 22:19:37 »
Вобщем надо сделать так, чтоб я мог в любом месте кода вставить оператор или вызов подпрограммы, чтобы выдти из любого условия.
Есть люди, а есть программеры.

Оффлайн YA

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 597
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как выдти из цикла.
« Ответ #13 : 16 Марта 2002, 23:46:26 »
Так, давай с начала. Что значит, "выдти из любого условия"? Пример привести можешь?
Литературный перевод с русского и английского на Perl. Дорого!

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
Как выдти из цикла.
« Ответ #14 : 17 Марта 2002, 00:51:34 »
Цитировать
Так, давай с начала. Что значит, "выдти из любого условия"? Пример привести можешь?

да, звучит весьма своеобразно: условие либо удовлетворяется либо нет, если удовлетворяется то зачем выходить? Если уж очень надо выйти, то YA написал вариант last с метками
 в исканиях.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28