|
Ancora più semplice dell'iterazione introdotta da while è quella che viene presentata dalla keyword loop. Questa serve semplicemente a causare una iterazione infinita. La sintassi è molto semplice: loop { istruzioni } Come da esempio:
Eseguendo questo programma la stringa di saluto viene eseguita all'infinito per cui preparatevi con i comandi del sistema operativo per interromperne l'esecuzione. Come avrete capito break può essere utile in questo caso e analogamente potrete utilizzare continue per saltare i passi che volete:
il cui output sarà:
senza il numero 5 escluso dal continue alla riga 6 Anche loop esprime () come valore di uscita, come while per cui ve ne farete poco in questo senso. Una cosa interessante nasce dalla considerazione che Rust non ha il costrutto do...while presente in altri linguaggi (o anche il repat..until del Pascal che fa la stessa cosa) che esegue almeno una iterazione prima di valutare la condizione. Si può usare loop per simulare quella sequenza come nell'esempio precedente inserendo la condizione e il break. L'istruzione loop non è strettamente necessaria in sè stessa, si può ricorrere a vari artifici per raggiungere lo stesso scopo da esso prodotto, ma qualche vantaggio lo offre: 1) Semplicità: La sintassi di loop è estremamente semplice e chiara. Non c'è bisogno di definire una condizione di loop all'inizio; il ciclo continua a eseguire fino a quando non viene incontrato un comando di controllo del flusso. 2) Garanzia di esecuzione: A differenza di while, che potrebbe non eseguire mai il suo corpo se la condizione iniziale è falsa, un loop eseguirà sempre il suo corpo almeno una volta, a meno che non ci sia un break o un return prima di qualsiasi altra istruzione all'interno del loop. 3) Uso con break per restituire valori: Rust permette di usare break con un valore per terminare un loop e restituire quel valore dal ciclo. Questo può essere molto utile per situazioni in cui si vuole restituire un risultato calcolato iterativamente. 4) Costruzione ideale per polling o cicli di attesa: loop è ideale per situazioni come il polling, dove è necessario eseguire un'azione ripetutamente fino a che una condizione esterna è soddisfatta, e non si sa a priori quante iterazioni saranno necessarie. 5) Facilità di gestione dell'uscita: Gestire l'uscita da un loop può essere più diretto poiché l'unico punto di uscita è esplicitamente marcato con break, rendendo il flusso del programma più chiaro e meno propenso a errori accidentali di logica. Per cui usatelo senza timore quando pensate vi possa essere utile. |