Предыдущая часть — часть 6: условные операторы if…else, case, unless.
Содержание
Оператор while
Выполняет код, пока условие истинно.
Оператор while отделяется от кода с помощью ключевого слова do, новой строки, обратного слеша или точкой с запятой.
Синтаксис:
while условие [do] код end
Пример:
#!/usr/bin/ruby
$i = 0
$num = 5
while $i < $num do
puts("Inside the loop i = #$i" )
$i +=1
end
Выполнение:
$ ./while.rb Inside the loop i = 0 Inside the loop i = 1 Inside the loop i = 2 Inside the loop i = 3 Inside the loop i = 4
Модификатор while
Синтаксис:
код while условие
либо:
begin код end while условие
В отличии от оператора while — тут код выполняется до проверки условия.
Пример:
#!/usr/bin/ruby
$i = 0
$num = 5
begin
puts("Inside the loop i = #$i" )
$i +=1
end while $i < $num
Результат:
$ ./while.rb Inside the loop i = 0 Inside the loop i = 1 Inside the loop i = 2 Inside the loop i = 3 Inside the loop i = 4
Оператор until
Синтаксис:
until условие [do] код end
Выполняет код, пока условие ложно (false). Отделяется от кода с помощью do, новой строки или точкой с запятой.
Пример:
#!/usr/bin/ruby
$i = 0
$num = 5
until $i > $num do
puts("Inside the loop i = #$i" )
$i +=1;
end
Результат выполнения:
$ ./until.rb Inside the loop i = 0 Inside the loop i = 1 Inside the loop i = 2 Inside the loop i = 3 Inside the loop i = 4 Inside the loop i = 5
Модификатор until
Синтаксис:
код until условие
либо:
begin код end until условие
Выполняет код, пока условие ложно. Код выполняется до проверки условия.
Пример:
#!/usr/bin/ruby
$i = 0
$num = 5
begin
puts("Inside the loop i = #$i" )
$i +=1;
end until $i > $num
Результат:
$ ./until.rb Inside the loop i = 0 Inside the loop i = 1 Inside the loop i = 2 Inside the loop i = 3 Inside the loop i = 4 Inside the loop i = 5
Оператор for
Синтаксис:
for переменная [, переменные ... ] in выражение [do] код end
Выполняет код для каждого элемента в выражении.
Пример:
#!/usr/bin/ruby
for i in 0..5
puts "Value of local variable is #{i}"
end
Тут задается диапазон значений от 1 до 5, и для каждого элемента выполняется puts.
Результат:
$ ./for.rb Value of local variable is 0 Value of local variable is 1 Value of local variable is 2 Value of local variable is 3 Value of local variable is 4 Value of local variable is 5
Цикл for аналогичен такой форме записи:
(выражение).each do |переменная[, переменная...]| код end
Цикл for может быть отделен от кода с помощью ключевого слова do, новой строки или точки с запятой.
Еще один пример:
#!/usr/bin/ruby
(0..5).each do |i|
puts "Value of local variable is #{i}"
end
Оператор break
Прерывает выполнение цикла. Например:
#!/usr/bin/ruby
for i in 0..5
if i > 2 then
break
end
puts "Value of local variable is #{i}"
end
Результат:
$ ./break.rb Value of local variable is 0 Value of local variable is 1 Value of local variable is 2
Оператор next
Прерывает выполнение текущего цикла, и переключается на следующий. Например:
#!/usr/bin/ruby
for i in 0..5
if i <= 2 then
next
end
puts "Value of local variable is #{i}"
end
Результат:
$ ./next.rb Value of local variable is 3 Value of local variable is 4 Value of local variable is 5
Оператор redo
Запускает цикл заново, например:
#!/usr/bin/ruby
for i in 0..5
if i < 2 then
puts "Value of local variable is #{i}"
redo
end
end
Результат:
$ ./redo.rb Value of local variable is 0 Value of local variable is 0 Value of local variable is 0 Value of local variable is 0 Value of local variable is 0 ...
Оператор retry
При использовании retry в блоке begin/rescue/end — вызовет выполнеине кода в begin сначала:
begin do_something # exception raised rescue # handles error retry # restart from beginning end
Пример:
#!/usr/bin/env ruby
$a = 1
begin
file = File.open('test.fle', 'r')
rescue Errno::ENOENT
puts "No file found, attempt #{$a}"
$a += 1
retry if $a <= 5
end
Результат выполнения:
$ ./retry.rb No file found, attempt 1 No file found, attempt 2 No file found, attempt 3 No file found, attempt 4 No file found, attempt 5





36 773 views