English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
I cicli in Ruby vengono utilizzati per eseguire lo stesso blocco di codice più volte. Questa sezione introducescerà tutte le espressioni di ciclo supportate da Ruby.
while condizionale [fare] codice end
o
while condizionale [:] codice end
quando condizionale Quando è vero, eseguire codice.
In sintassi, 'fare' o ':' possono essere omessi. Tuttavia, per scrivere un'espressione 'while' su una singola riga, è necessario separare l'espressione condizionale o il blocco di codice con 'fare' o ':'.
#!/usr/bin/ruby # -*- coding: UTF-8 -*- $i = 0 $num = 5 while $i < $num fare puts("Nel ciclo la variabile i = #$i") $i +=1 end
L'esempio di output sopra è:
nel ciclo la variabile i = 0 nel ciclo la variabile i = 1 nel ciclo la variabile i = 2 nel ciclo la variabile i = 3 nel ciclo la variabile i = 4
code while condition o begin codice fine while condizionale
quando condizionale Quando è vero, eseguire codice.
se while il modificadori segue un rescue o la clausola ensure begin ,codice dopo la frase condizionale giudica una volta prima dell'esecuzione.
#!/usr/bin/ruby # -*- coding: UTF-8 -*- $i = 0 $num = 5 begin puts("Nel ciclo la variabile i = #$i") $i +=1 fine while $i < $num
L'esempio di output sopra è:
nel ciclo la variabile i = 0 nel ciclo la variabile i = 1 nel ciclo la variabile i = 2 nel ciclo la variabile i = 3 nel ciclo la variabile i = 4
finché condizionale [fare] codice end
quando condizionale Quando è falso, eseguire codice.
In sintassi, 'fare' può essere omesso. Tuttavia, per scrivere una espressione 'finché' su una singola riga, è necessario separare l'espressione condizionale o il blocco di codice con 'fare'.
#!/usr/bin/ruby # -*- coding: UTF-8 -*- $i = 0 $num = 5 finché $i > $num fare puts("Nel ciclo la variabile i = #$i") $i +=1; end
L'esempio di output sopra è:
nel ciclo la variabile i = 0 nel ciclo la variabile i = 1 nel ciclo la variabile i = 2 nel ciclo la variabile i = 3 nel ciclo la variabile i = 4 nel ciclo la variabile i = 5
codice until condizionale o begin codice end until condizionale
quando condizionale è false, esegue codice.
se until il modificadori segue un rescue o la clausola ensure begin ,codice dopo la frase condizionale giudica una volta prima dell'esecuzione.
#!/usr/bin/ruby # -*- coding: UTF-8 -*- $i = 0 $num = 5 begin puts("Nel ciclo la variabile i = #$i") $i +=1; end until $i > $num
L'esempio di output sopra è:
nel ciclo la variabile i = 0 nel ciclo la variabile i = 1 nel ciclo la variabile i = 2 nel ciclo la variabile i = 3 nel ciclo la variabile i = 4 nel ciclo la variabile i = 5
for variabile [, variabile ...] in espressione [do] codice end
calcola prima l'espressione per ottenere un oggetto, quindi esegue espressione ogni elemento esegue una volta codice.
#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 puts "The value of the local variable is #{i}" end
Qui abbiamo definito l'intervallo 0..5. La frase for i in 0..5 permette al valore di i di variare da 0 a 5 (incluso 5).
L'esempio di output sopra è:
Il valore della variabile locale è 0 The value of the local variable is 1 The value of the local variable is 2 Il valore della variabile locale è 3 Il valore della variabile locale è 4 Il valore della variabile locale è 5
for...in Il ciclo è quasi completamente equivalente a:
(espressione).each do |variabile[, variabile...]| codice end
Ma il ciclo for non crea una nuova visibilità per le variabili locali.
La parola chiave do può essere omessa nella sintassi. Ma se si desidera scrivere un ciclo for su una singola riga, è necessario separare l'espressione di condizione o il blocco di codice con do.
#!/usr/bin/ruby # -*- coding: UTF-8 -*- (0..5).each do |i| puts "The value of the local variable is #{i}" end
L'esempio di output sopra è:
Il valore della variabile locale è 0 The value of the local variable is 1 The value of the local variable is 2 Il valore della variabile locale è 3 Il valore della variabile locale è 4 Il valore della variabile locale è 5
break
Termina il ciclo interno più interno. Se chiamato all'interno di un blocco, termina il metodo correlato (il metodo restituisce nil).
#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 if i > 2 then break end puts "The value of the local variable is #{i}" end
L'esempio di output sopra è:
Il valore della variabile locale è 0 The value of the local variable is 1 The value of the local variable is 2
next
Salta all'iterazione successiva del ciclo. Se chiamato all'interno di un blocco, termina l'esecuzione del blocco (yield l'espressione restituisce nil).
#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 if i < 2 then next end puts "The value of the local variable is #{i}" end
L'esempio di output sopra è:
The value of the local variable is 2 Il valore della variabile locale è 3 Il valore della variabile locale è 4 Il valore della variabile locale è 5
redo
Ricomincia questa iterazione dell'ultimo ciclo interno senza controllare le condizioni del ciclo. Se chiamato all'interno di un blocco, ricomincia. yield o call.
#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 if i < 2 then puts "The value of the local variable is #{i}" redo end end
This will produce the following result and enter an infinite loop:
Il valore della variabile locale è 0 Il valore della variabile locale è 0 ............................
Attenzione: le versioni 1.9 e successive non supportano l'uso di retry all'interno di cicli.
retry
se retry Se presente nella clausola rescue dell'espressione begin, ricomincia dall'inizio del corpo begin.
begin do_something # Thrown exception rescue # Error handling retry # Restart from begin end
If retry appears within the iteration, block, or the body of the for expression, the iteration will restart. The iteration parameters will be re-evaluated.
for i in 1..5 retry if some_condition # Restart from i == 1 end
#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 1..5 retry if i > 2 puts "The value of the local variable is #{i}" end
This will produce the following result and enter an infinite loop:
The value of the local variable is 1 The value of the local variable is 2 The value of the local variable is 1 The value of the local variable is 2 The value of the local variable is 1 The value of the local variable is 2 ............................