Cercavo però un codice colleghi sviluppatori quando ho visto questo ..Cosa significa per (;;) in Perl?
for (;;){
....
....
....
}
Non ho mai visto ";;" usato in un ciclo. Cosa fa esattamente questo?
Cercavo però un codice colleghi sviluppatori quando ho visto questo ..Cosa significa per (;;) in Perl?
for (;;){
....
....
....
}
Non ho mai visto ";;" usato in un ciclo. Cosa fa esattamente questo?
Si avvicina per sempre. ';;' equivale a nessun valore iniziale, nessuna condizione di arresto e nessuna condizione di incremento.
È equivalente a
while (true)
{
...
}
ci sarà di norma un condizionale break;
dichiarazione da qualche parte nel corpo del ciclo meno che non sia qualcosa di simile a un sistema a circuito inattivo o message pump.
Impressionante! Grazie Mitch! Ora che lo vedo come "loop per sempre a causa di parametri non specificati" ha perfettamente senso. –
La nota sui loop infiniti in "Learning Perl" nota che sebbene la forma for sia quella idiomatica in Perl è la forma while (raccomandano mentre (1)). – HerbN
@Ben: se ti è piaciuto, controlla l'operatore '->', come in 'while ($ x -> 0) {...}'. – Ether
Infinite Loop (fino a quando non si esce da esso).
è spesso usato al posto di:
while(true) { // Do something }
Sembra una cattiva idea da usare invece di 'while (true) {...}'. Confonde solo noobs. –
Per quelli di noi che vengono dal C++ usando VS, mentre (true) lancia un avvertimento durante la compilazione ma per (;;) no. I progetti che eseguono 0 avvisi del compilatore sono obbligati a utilizzare per (;;) e vengono trasferiti quando si cambiano le lingue. – tloach
0 avvertimenti? Dannazione! –
Tutti e 3 le parti sono opzionali. L'inizializzazione e l'aggiornamento di un ciclo vuoto sono noop. Una condizione di terminazione vuota è implicita true
. È praticamente lo stesso di
while (true) {
//...
}
Si noti che non è necessario essere tutto o niente; puoi avere una parte e non altre.
for (init; cond;) {
//...
}
for (; cond; update) {
//...
}
for (init; ; update) {
//...
}
Ciclo infinito. Un sacco di volte sarà usato in una discussione per fare un po 'di lavoro.
boolean exit = false;
for(;;) {
if(exit) {
break;
}
// do some work
}
E 'lo stesso di
while(true) {
...
}
E loop per sempre.
Non è necessario specificare tutte le parti di un ciclo for. Ad esempio, il seguente ciclo (che non contiene il corpo, o l'aggiornamento token) eseguirà una ricerca lineare di myArray
for($index = -1; $myArray[++$index] != $target;);
Proprio come in C, il ciclo for
ha tre sezioni:
Ad esempio:
for (i = 1, acc = 0; i <= 10; i++)
acc += i;
si sommano i numeri da 1 a 10 incluso (in C e, a patto di utilizzare la sintassi Perl come $i
e bretelle, in Perl pure).
Tuttavia, nulla richiede che le sezioni effettivamente contengano nulla e, se la condizione è mancante, si presume che sia vera.
Quindi il ciclo for(;;)
significa semplicemente: non eseguire alcuna configurazione di loop, loop per sempre (interruzioni in deroga) e non eseguire alcuna elaborazione specifica dell'iterazione. In altre parole, è un ciclo infinito.
fyi, questa struttura non è univoca di perl; Scommetterei la maggior parte delle lingue con un supporto per la struttura (initialize; test; update) {} che ha uno di questi campi vuoto. – Carl
Una domanda più utile per la ricerca sarebbe "Cosa fa per (;;) do" –
Domanda di programmazione elementare !!! Come mai ha ottenuto così tanti voti e opinioni ?! – Viet