[Roma.pm] una facile

Aldo Calpini dada at perl.it
Thu Apr 23 09:44:49 PDT 2009


kanak at perl.it wrote:
> me lo puoi snodare due secondi plis, pare interessante ma per me e'
> arrabo.
> 
> vuoi forse dire che nella parentesi del "for" posso mettere gruppi di
> comandi invece che liste?

ni.

for ha sostanzialmente due sintassi, quella semplice:

for my $iteratore (@lista) { ... }

e quella bizantina (presa para para dal linguaggio C):

for(inizializzazione; controllo; incremento) { ... }

inizializzazione, controllo e incremento possono essere effettivamente 
gruppi di comandi. il primo viene eseguito solo a inizio ciclo. il 
secondo viene eseguito ad ogni iterazione e, se ritorna un valore falso, 
  determina la fine del ciclo. il terzo viene eseguito ad ogni 
iterazione punto e basta.

in sostanza, il ciclo for in questo modo e' equivalente a:

inizializzazione;
while(controllo) {
	...
	incremento;
}

sembra complicato, ma lo e' :-)

la forma piu' consueta per inizializzazione, controllo e incremento e':

for(my $i = 0; $i < 10; $i++) { ... }

questo esegue il ciclo inizializzando $i a 0, controlla ogni volta che 
sia minore di 10, e ad ogni ciclo aggiunge uno ad $i. risultato:

for my $i (0..9) { ... }

le tre parti possono effettivamente essere complicare a piacere, tipo:

for(my($i, $j) = (0, 0); rand() > 0.999; $i++, $j--) { ... }

questo fa un loop con due variabili, una crescente e una decrescente, 
che termina quando esce un numero casuale maggiore di 0.999.

probabilmente molto di piu' di quanto avresti voluto sapere :-)

cheers,
Aldo



More information about the Roma mailing list