Что для (?;) означает в Perl?

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

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

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

Ответы

Ответ 1

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

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

while (true)
{
   ...
}

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

Ответ 2

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

while (true) {
   //...
}

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

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

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

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

Ответ 3

Бесконечная петля. Много времени он будет использоваться в потоке, чтобы выполнить некоторую работу.

    boolean exit = false;

    for(;;) {
        if(exit) {
            break;
        }
        // do some work
    }

Ответ 4

Как и в C, цикл for имеет три раздела:

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

Например:

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

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

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

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

Ответ 5

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

Он часто используется вместо:

while(true) { // Do something }

Ответ 6

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

while(true) {
   ...
}

Он будет навеки.

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

for($index = -1; $myArray[++$index] != $target;);