que estaba buscando a través de un código de compañeros desarrolladores cuando vi esto ..¿Qué significa para (;;) en Perl?
for (;;){
....
....
....
}
nunca he visto ";;" usado en un bucle ¿Qué hace esto exactamente?
que estaba buscando a través de un código de compañeros desarrolladores cuando vi esto ..¿Qué significa para (;;) en Perl?
for (;;){
....
....
....
}
nunca he visto ";;" usado en un bucle ¿Qué hace esto exactamente?
Se repite para siempre. ';;' equivale a ningún valor de inicio, ninguna condición de detención y ninguna condición de incremento.
Es equivalente a
while (true)
{
...
}
Hay por lo general sería un condicional break;
declaración en alguna parte del cuerpo del bucle a menos que sea algo así como un sistema de circuito en reposo o suministro de mensajes.
¡Impresionante! Gracias Mitch! Ahora que lo veo como "bucles para siempre debido a que no hay parámetros especificados", tiene mucho sentido. –
La nota sobre bucles infinitos en "Learning Perl" señala que aunque la forma for es la idiomática en Perl es la forma while (se recomiendan mientras (1)). – HerbN
@Ben: si te gustó eso, mira el operador '->', como en 'while ($ x -> 0) {...} '. – Ether
Infinite Loop (hasta que salga de él).
A menudo se utiliza en lugar de:
while(true) { // Do something }
Suena como una mala idea para usar en lugar de 'while (true) {...}'. Solo confunde noobs. –
Para aquellos de nosotros que venimos de C++ usando VS, mientras que (verdadero) lanza una advertencia al compilar, pero para (;;) no. Los proyectos que ejecutan 0 advertencias de compilador se fuerzan a usar para (;;) y se transfieren al cambiar de idioma. – tloach
0 advertencias? ¡Maldita sea! –
las 3 partes son opcionales. Una inicialización y actualización de bucle vacío es un noop. Una condición de terminación vacía es implícita true
. Es esencialmente lo mismo que
while (true) {
//...
}
Tenga en cuenta que no tiene que ser todo o nada; puedes tener una parte y no otras.
for (init; cond;) {
//...
}
for (; cond; update) {
//...
}
for (init; ; update) {
//...
}
Infinite loop. Gran parte del tiempo se usará en un hilo para hacer algo de trabajo.
boolean exit = false;
for(;;) {
if(exit) {
break;
}
// do some work
}
Es la misma que
while(true) {
...
}
mismo enlaza siempre.
No necesita especificar todas las partes de un bucle for. Por ejemplo el siguiente bucle (que no contiene ningún cuerpo, o de la ficha de actualización) llevará a cabo una búsqueda lineal de myArray
for($index = -1; $myArray[++$index] != $target;);
Al igual que en C, el bucle for
tiene tres secciones:
Por ejemplo:
for (i = 1, acc = 0; i <= 10; i++)
acc += i;
se suman los números de 1 a 10 inclusive (en C y, suponiendo que utiliza una sintaxis Perl como $i
y tirantes, en Perl también).
Sin embargo, nada requiere que las secciones realmente contengan nada y, si la condición falta, se supone que es verdadera.
Por lo tanto, el bucle for(;;)
básicamente significa: no realice ninguna configuración de bucle, realice bucles para siempre (no obstante, se rompa) y no realice ningún procesamiento específico de iteración. En otras palabras, es un ciclo infinito.
fyi, esta estructura no es exclusiva de perl; Apostaría a la mayoría de los idiomas con un soporte de estructura for (initialize; test; update) {} con cualquiera de esos campos vacíos. – Carl
Una pregunta más útil para buscar sería "¿Qué hace para (;;) do" –
Pregunta de programación elemental !!! ¿Cómo es que obtuvo tantos votos y puntos de vista? – Viet