English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Ruby Loops

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.

Ruby while istruzione

sintassi

while condizionale [fare]
   codice
end

o

sintassi

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 ':'.

Online Examples

#!/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

Ruby while modificadori

sintassi

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.

Online Examples

#!/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

Ruby until istruzione

sintassi

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'.

Online Examples

#!/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

Ruby until modificadori

sintassi

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.

Online Examples

#!/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

Ruby for istruzione

sintassi

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.

Online Examples

#!/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.

Online Examples

#!/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

Ruby break istruzione

sintassi

break

Termina il ciclo interno più interno. Se chiamato all'interno di un blocco, termina il metodo correlato (il metodo restituisce nil).

Online Examples

#!/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

Ruby next istruzione

sintassi

next

Salta all'iterazione successiva del ciclo. Se chiamato all'interno di un blocco, termina l'esecuzione del blocco (yield l'espressione restituisce nil).

Online Examples

#!/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

Ruby redo istruzione

sintassi

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.

Online Examples

#!/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
............................

Ruby retry istruzione

Attenzione: le versioni 1.9 e successive non supportano l'uso di retry all'interno di cicli.

sintassi

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

Online Examples

#!/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
............................