Предыдущая часть – часть 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