Автор Тема: Простой вопрос - прервать цикл.  (Прочитано 4041 раз)

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

Оффлайн Evgeny

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 272
  • +0/-0
  • 0
    • Просмотр профиля
Прошу прощеня за такой глупый вопрос.
Как прервать цикл
do
{
...
}
while (...);

last - это для foreach, for, while(){},
но не do {} while(); !
Раньше без этого обходился, даже не задумывался над этим.
Заранее спасибо.

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Простой вопрос - прервать цикл.
« Ответ #1 : 11 Июня 2002, 17:27:02 »
Цитировать
last - это для foreach, for, while(){},
но не do {} while(); !

Почему?

#!/usr/bin/perl

$i = 0;

while (1)
{
print ++$i."\\n";
last;
}  

---------- Perl Run ----------
1
Normal Termination
Output completed (0 sec consumed).
2B OR NOT 2B = FF

Оффлайн Evgeny

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 272
  • +0/-0
  • 0
    • Просмотр профиля
Простой вопрос - прервать цикл.
« Ответ #2 : 11 Июня 2002, 17:49:43 »
Цитировать
Почему?


Я же написал do {...} while(...);

Попробуй это:



#!/usr/bin/perl

$i = 0;

do
{   print ++$i."\\n";
    last;
}  
while (1);

Оффлайн YA

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 597
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Простой вопрос - прервать цикл.
« Ответ #3 : 11 Июня 2002, 17:50:27 »
Evgeny
Цитировать
Как прервать цикл
do

Вопрос некорректен: do (даже с модификатором while) не является настоящим оператором цикла и команда last в нем работать не должна. Для этого используй обычные операторы цикла (в смысле, не do) или условия.

Chs
Evgeny спрашивал не о while, а о do... while....
Литературный перевод с русского и английского на Perl. Дорого!

  • Гость
Простой вопрос - прервать цикл.
« Ответ #4 : 11 Июня 2002, 17:52:20 »
#!/usr/bin/perl

use warnings;
use strict;

DO: {
my $i = 0;
do {
print ++$i, "\\n";
last DO if $i == 10;
} while (1);
}

  • Гость
Простой вопрос - прервать цикл.
« Ответ #5 : 11 Июня 2002, 17:53:15 »
Так как do не является блоком, то приходиться использовать цикл с одной итерацией, то есть голый блок.

Оффлайн Evgeny

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 272
  • +0/-0
  • 0
    • Просмотр профиля
Простой вопрос - прервать цикл.
« Ответ #6 : 11 Июня 2002, 18:31:26 »
Цитировать
Так как do не является блоком, то приходиться использовать цикл с одной итерацией, то есть голый блок.

Спасибо, хотя не понятно, из каких соображений разработчики Перла решили отнести конструкцию do .. while() к не-блоку...

 

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