Latest web development tutorials

Рубин цикла

Рубин в цикле для выполнения той же блок кода несколько раз. В этом разделе будет подробно все петли поддержки Ruby.

Рубинв то время как заявление

грамматика

while conditional [do]
   code
end

или

<pre>
while conditional [:]
   code
end

Когдаусловнаяправда, он выполняеткод.

Или же синтаксис: вы можете быть опущены. Но чтобы написать формулу в то время как в линии, или вы должны сделать: помимо условного выражения или программные блоки.

примеров

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

$i = 0
$num = 5

while $i < $num  do
   puts("在循环语句中 i = #$i" )
   $i +=1
end

В приведенном выше примере выход:

在循环语句中 i = 0
在循环语句中 i = 1
在循环语句中 i = 2
在循环语句中 i = 3
在循环语句中 i = 4

Рубинв то время как модификатор

грамматика

code while condition

或者

begin 
  code 
end while conditional

Когдаусловнаяправда, он выполняеткод.

Если в качестве модификатора, безспасенияили поздноначатьзаявление обеспечитьположение,код будет выполняться один раз передусловногосуждения.

примеров

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

$i = 0
$num = 5
begin
   puts("在循环语句中 i = #$i" )
   $i +=1
end while $i < $num

В приведенном выше примере выход:

在循环语句中 i = 0
在循环语句中 i = 1
在循环语句中 i = 2
在循环语句中 i = 3
在循环语句中 i = 4

Рубин недо заявлений

until conditional [do]
   code
end

Когдаусловнаяложь, выполнитькод.

Синтаксис Do могут быть опущены. Но не писать, пока формулы, вы должны сделать условное выражение или программные блоки друг от друга в ряду.

примеров

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

$i = 0
$num = 5

until $i > $num  do
   puts("在循环语句中 i = #$i" )
   $i +=1;
end

В приведенном выше примере выход:

在循环语句中 i = 0
在循环语句中 i = 1
在循环语句中 i = 2
在循环语句中 i = 3
在循环语句中 i = 4
在循环语句中 i = 5

Рубин недо модификаторов

грамматика

code until conditional

或者

begin
   code
end until conditional

Когдаусловнаяложь, выполнитькод.

Еслидосих пор модификатор в заявлении , что неспасенияили поздноначатьобеспечитьположение,код будет выполняться один раз передусловногосуждения.

примеров

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

$i = 0
$num = 5
begin
   puts("在循环语句中 i = #$i" )
   $i +=1;
end until $i > $num

В приведенном выше примере выход:

在循环语句中 i = 0
在循环语句中 i = 1
在循环语句中 i = 2
在循环语句中 i = 3
在循环语句中 i = 4
在循环语句中 i = 5

Рубиндля заявления

грамматика

for variable [, variable ...] in expression [do]
   code
end

Первое выражение для вычисления , чтобы получить объект, товыражениедля каждого элемента в отдельностикода.

примеров

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

for i in 0..5
   puts "局部变量的值为 #{i}"
end

Здесь мы определили диапазон 0..5. Заявление для I в 0..5 позволяют значение I от 0 до 5 (с 5).

В приведенном выше примере выход:

局部变量的值为 0
局部变量的值为 1
局部变量的值为 2
局部变量的值为 3
局部变量的值为 4
局部变量的值为 5

для ... вцикл почти точно соответствует:

(expression).each do |variable[, variable...]| code end

Однако, цикл не создает новую область видимости для локальных переменных.

Синтаксис Do могут быть опущены. Но писать для формулы в строке, то вы должны делать, кроме условного выражения или программные блоки.

примеров

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

(0..5).each do |i|
   puts "局部变量的值为 #{i}"
end

В приведенном выше примере выход:

局部变量的值为 0
局部变量的值为 1
局部变量的值为 2
局部变量的值为 3
局部变量的值为 4
局部变量的值为 5

Заявление перерываРубин

грамматика

break

Прекращение внутреннего цикла. Если вызывается в блоке, блок связан с прекращением (метод возвращает ноль).

примеров

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

for i in 0..5
   if i > 2 then
      break
   end
   puts "局部变量的值为 #{i}"
end

В приведенном выше примере выход:

局部变量的值为 0
局部变量的值为 1
局部变量的值为 2

Рубинследующий оператор

грамматика

next

Перейти к следующей итерации цикла. Если вы звоните в блоке завершает блок исполнения(выходвыражение возвращает ноль).

примеров

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

for i in 0..5
   if i < 2 then
      next
   end
   puts "局部变量的值为 #{i}"
end

В приведенном выше примере выход:

局部变量的值为 2
局部变量的值为 3
局部变量的值为 4
局部变量的值为 5

Заявление RedoРубин

грамматика

redo

Перезапуск самой внутренней итерации цикла, условие цикла не проверяется. Если вы звоните в блоке, а затем перезапуститьвыходиливызов.

примеров

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

for i in 0..5
   if i < 2 then
      puts "局部变量的值为 #{i}"
      redo
   end
end

Это дает следующие результаты, и войдет в бесконечный цикл:

局部变量的值为 0
局部变量的值为 0
............................

Заявление повторных попытокРубин

Примечание: 1.9 и более поздние версии не поддерживают использование повторных попыток в цикле.

грамматика

retry

Еслиповторная попыткапоявляется в выражении начинают пункт восстановления, с начала тела начинают заново начать.

begin
   do_something   # 抛出的异常
rescue
   # 处理错误
   retry          # 重新从 begin 开始
end

Если повторная попытка появится в итерации, или для выражения внутри тела, повторно итерацию вызовов в пределах блока. итерационных параметров переоцениваются.

for i in 1..5
   retry if some_condition # 重新从 i == 1 开始
end

примеров

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

for i in 1..5
   retry if  i > 2
   puts "局部变量的值为 #{i}"
end

Это дает следующие результаты, и войдет в бесконечный цикл:

局部变量的值为 1
局部变量的值为 2
局部变量的值为 1
局部变量的值为 2
局部变量的值为 1
局部变量的值为 2
............................