Forum Webscript.Ru
Программирование => Perl => Тема начата: HTML2K от 16 Марта 2002, 00:51:46
-
Есть цикл for (....) {}
Нужно из него просто выдти. Чтонибуть типа end for; или exit for; Есть в перле чтонибуть похожее?
-
Есть в перле чтонибуть похожее?
Есть: last
METKA: for (...)
{
...
last METKA if ...;
...
}
-
Но это тоже самое goto; а именно не переход куданибуть, а выход из цикла
-
goto в перле тоже есть, но его использование не приветствуется (да оно и не надо вовсе). А last можешь использовать и без метки.
См. также:
next - переход к следущей итерации;
redo - возврат к началу текущей итерации.
-
можешь использовать и без метки.
например:
my $time=time();
while (1){
last if (time-$time)>15;
}
#через 15 сек. выйдет из цикла
-
А
my $time=time();
while (1){
last if (time-$time)>0;
}
Сразу выдет из цикла ?
-
А
my $time=time();
while (1){
last if (time-$time)>0;
}
Сразу выдет из цикла ?
Нет не сразу, а именно через секунду (пройдет как минимум одна интерация).
А если написать ">=0", то выйдет обязательно из первой интерации.
-
Нет не сразу, а именно через секунду (пройдет как минимум одна интерация).
не через секунду, а через одну итерацию ;) у меня за 5 сек, там несколько тысяч набежало.
Для видимости поставьте счетчик:
my $time=time();
while (1){
last if (time-$time)>0;
$i++;
}
print "Кол-во итераций: $i";
-
Green Kakadu
Разве я не правильно ответил на вопрос?
пройдет как минимум одна итерация
Т.е. столько, сколько успеет за первую секунду.
-
Разве я не правильно ответил на вопрос?
угу, за секунду ;) я стормозил :)
-
А если сделать так:
sub exitif {
my $time=time();
while (1){
last if (time-$time)>=0;
}
}
то вызов подпрограммы &exitif; будет выходом из любого if ???
-
Что значит
будет выходом из любого if
?
Цикл завершится на первой же итерации. Тут же завершится подпрограмма (если в ней больше ничего нет). И все! :)
Ты лучше напиши, что хочешь сделать.
А еще лучше переходи в форум "Perl".
-
Вобщем надо сделать так, чтоб я мог в любом месте кода вставить оператор или вызов подпрограммы, чтобы выдти из любого условия.
-
Так, давай с начала. Что значит, "выдти из любого условия"? Пример привести можешь?
-
Так, давай с начала. Что значит, "выдти из любого условия"? Пример привести можешь?
да, звучит весьма своеобразно: условие либо удовлетворяется либо нет, если удовлетворяется то зачем выходить? Если уж очень надо выйти, то YA написал вариант last с метками
-
Блин я тупой, не из условия :)) а из цикла.
Есть серия циклов
for (...) {...}
for (...) {...}
for (...) {...}
В каждом цикле есть проверка на совпадение константы и счетчика цикла. Если условие выполняеться надо выдти из цикла, тоесть просто идти дальше по коду, как буд-то этого цикла не было. Вариант с меткой не подходит, циклов довольно много.
-
Если условие выполняеться надо выдти из цикла, тоесть просто идти дальше по коду, как буд-то этого цикла не
for (...) {last if...}
for (...) {last if...}
for (...) {last if...}
А если нужно выйти из серии вложенных циклов то метка поможет (как YA говорил)
МЕТКА: for(..) {
for (...) {
for (...) { last METKA if.. }
}
}
-
циклы не вложены
-
В каждом цикле есть проверка на совпадение константы и счетчика цикла. Если условие выполняеться надо выдти из цикла, тоесть просто идти дальше по коду, как буд-то этого цикла не было. Вариант с меткой не подходит, циклов довольно много.
циклы не вложены
Если циклы не вложены, то метки тебе не нужны. Если константа (переменная) определяется внутри циклов, то делай, как сказал Green Kakadu (проще не получится):
for (...) {last if...}
for (...) {last if...}
for (...) {last if...}
Если константа определяется до цикла(ов), то можно сделать проще... Опиши подробнее, на форуме очень мало телепатов :)
-
Опиши подробнее, на форуме очень мало телепатов
вроде бы NeoNox практиковался в угадывании мыслей.