Что делает для (; ;) имейте в виду в Perl?

Я смотрел, хотя такие же разработчики кодируют, когда я видел это..

for (;;){
   ....
   ....
   ....
}

Я никогда не видел";"; используемый в цикле. Что это делает точно?

15
задан brian d foy 29 April 2010 в 16:01
поделиться

6 ответов

Он зацикливается бесконечно. ';;' приравнивается к отсутствию начального значения, без условия остановки и без условия приращения.

Это эквивалентно

while (true)
{
   ...
}

Обычно в теле цикла есть условный оператор break; , если только это не что-то вроде цикла простоя системы или перекачки сообщений.

27
ответ дан 1 December 2019 в 00:23
поделиться

Как и в C, цикл for состоит из трех частей:

  • предварительная часть цикла, которая выполняется перед запуском цикла.
  • секция продолжающегося условия, которая, хотя и истинна, будет поддерживать цикл.
  • пост-итерационная секция, которая выполняется после каждой итерации тела цикла.

Например:

for (i = 1, acc = 0; i <= 10; i++)
    acc += i;

сложит числа от 1 до 10 включительно (в C и, если вы используете синтаксис Perl, например $ i и фигурные скобки, также и в Perl).

Однако ничто не требует, чтобы разделы на самом деле содержали что-либо, и, если условие отсутствует, предполагается, что оно истинно.

Таким образом, цикл for (;;) в основном означает: не выполнять никаких настроек цикла, повторять цикл навсегда (несмотря на прерывания) и не выполнять никакой обработки, специфичной для итераций. Другими словами, это бесконечный цикл.

4
ответ дан 1 December 2019 в 00:23
поделиться

Все 3 части являются необязательными. Инициализация и обновление пустого цикла - это беззвучный цикл. Пустое условие завершения - это неявное истинное . По сути, это то же самое, что и

while (true) {
   //...
}

. Обратите внимание, что это не обязательно должно быть все или ничего; вы можете иметь какую-то часть, а другую - нет.

for (init; cond; ) {
  //...
}

for (; cond; update) {
  //...
}

for (init; ; update) {
  //...
}
10
ответ дан 1 December 2019 в 00:23
поделиться

Это то же самое, что и

while(true) {
   ...
}

Он зацикливается вечно.

Вам не нужно указывать все части цикла for. Например, следующий цикл (который не содержит тела или токена обновления) будет выполнять линейный поиск myArray

for($index = -1; $myArray[++$index] != $target;);
2
ответ дан 1 December 2019 в 00:23
поделиться

Бесконечный цикл. Часто он будет использоваться в потоке для выполнения некоторой работы.

    boolean exit = false;

    for(;;) {
        if(exit) {
            break;
        }
        // do some work
    }
4
ответ дан 1 December 2019 в 00:23
поделиться

Бесконечный цикл (пока вы не выйдете из него).

Часто используется вместо:

while(true) { // Do something }
2
ответ дан 1 December 2019 в 00:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: