Ruby Loops
Statemeht - инструкция или оператор, наименьшая автономная часть языка программирования; команда или набор команд, "по историческим причинам" русский термин «оператор» обозначает то же, что и «инструкция», которой соответствует английское statement. Программа обычно представляет собой последовательность инструкций
Modifier (модификатор) - это ключевое слово языка, которое может каким-либо образом изменить , что-либо (например:класс,метод,объект).
Operand (операнд) в языках программирования ― аргумент операции; данные, которые обрабатываются командой; грамматическая конструкция, обозначающая выражение, задающее значение аргумента операции. Иногда операндом называют место, позицию в тексте, где должен стоять аргумент операции. Отсюда понятие местности операции, то есть числа аргументов операции. sin x (x — операнд) a+b (a, b — операнды)
Операция — конструкция в языках программирования, аналогичная по записи математическим операциям.
Expression (выражение) — инструкция, присваивающая правую часть выражения левой части (выражает левую через правую).
Циклы в Ruby , как и везде, используются для выполнения одного и того же блока кода заданное количество раз. Ниже описаны все операторы цикла, поддерживаемые Ruby.
Ruby while Statement:
Синтаксис:
while conditional [do]
code
end
Выполняется код, пока условие истинно. Условное выражение цикла while отделяется от кода зарезервированным словом do, новой строкой, backslash или точкой с запятой ; .
Пример:
#!/usr/bin/ruby
$i = 0
$num = 5
while $i < $num do
puts ("Внутри цикла i = #$i" )
$i += 1
end
Это даст следующий результат:
Внутри цикла i = 0
Внутри цикла i = 1
Внутри цикла i = 2
Внутри цикла i = 3
Внутри цикла i = 4
Ruby while modifier:
Синтаксис:
cod while condition
OR
begin
code
end while conditional
Выполняет код, пока условие истинно.
Пример:
#!/usr/bin/ruby
$i = 0
$num = 5
begin
puts ( "Inside the loop i = #$i" )
$i +=1
end while $i < $num
Это даст следующий результат:
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
Ruby until Statement:
until conditional [do]
code
end
Выполняет код, пока условное значение ложно. Условное выражение оператора until отделяется от кода зарезервированным словом do, новой строкой или точкой с запятой.
Пример:
#!/usr/bin/ruby
$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
Ruby until modifier:
Синтаксис:
code until conditional
OR
begin
code
end until conditional
Выполняет код, пока условное значение ложно.
Если модификатор until следует за оператором begin без предложений rescue или ensure clauses, код выполняется один раз перед вычислением условного выражения.
Пример:
#!/usr/bin/ruby
$i = 0
$num = 5
begin
puts ("Внутри цикла i = #$i" )
$ i += 1
end while $ i > $ num
Это даст следующий результат:
Внутри цикла i = 0
Внутри цикла i = 1
Внутри цикла i = 2
Внутри цикла i = 3
Внутри цикла i = 4
Внутри цикла i = 5
Ruby for Statement:
Синтаксис:
for variable [, variable ... ] in expression [do]
code
end
Выполняет код один раз для каждого элемента в выражении.
Пример:
#!/usr/bin/ruby
for i in 0..5
puts "Значение локальной переменной #{i}"
end
Здесь мы определили диапазон 0..5. Оператор для i в 0..5 позволит i принимать значения в диапазоне от 0 до 5 (включая 5). Это даст следующий результат:
Значение локальной переменной 0
Значение локальной переменной 1
Значение локальной переменной 2
Значение локальной переменной 3
Значение локальной переменной 4
Значение локальной переменной 5
Цикл for ... in почти точно эквивалентен:
(expression) .each do |variable [, variable ...]| code end
за исключением того, что цикл for не создает новую область для локальных переменных. Выражение цикла for отделяется от кода зарезервированным словом do, новой строкой или точкой с запятой.
Пример:
#!/usr/bin/ruby
(0..5) .each do |i|
puts "Значение локальной переменной #{i}"
end
Это даст следующий результат:
Значение локальной переменной 0
Значение локальной переменной 1
Значение локальной переменной 2
Значение локальной переменной 3
Значение локальной переменной 4
Значение локальной переменной 5
Ruby break Statement:
Синтаксис:
break
Завершает самый внутренний цикл. Завершает метод со связанным блоком, если он вызывается внутри блока (при этом метод возвращает nil).
Пример:
#!/usr/bin/ruby
for i in 0..5
if i > 2 then
break
end
puts "Значение локальной переменной #{i}"
end
Это даст следующий результат:
Значение локальной переменной 0
Значение локальной переменной 1
Значение локальной переменной 2
Ruby next Statement:
Синтаксис:
next
Переход к следующей итерации самого внутреннего цикла. Завершает выполнение блока, если вызывается внутри блока (с yield или call, возвращающими nil).
Пример:
#!/usr/bin/ruby
for i in 0..5
if i < 2 then
next
end
puts "Значение локальной переменной #{i}"
end
Это даст следующий результат:
Значение локальной переменной 2
Значение локальной переменной 3
Значение локальной переменной 4
Значение локальной переменной 5
Ruby redo Statement:
Синтаксис:
redo
Перезапускает (повторяет) эту итерацию самого внутреннего цикла без проверки условия цикла. Перезапускает yield или call, если вызывается внутри блока.
Пример:
#!/usr/bin/ruby
for i in 0..5
if i < 2 then
puts "Значение локальной переменной #{i}"
redo
end
end
Это даст следующий результат и зайдет в бесконечный цикл:
Значение локальной переменной 0
Значение локальной переменной 0
............................
Ruby retry Statement:
Синтаксис:
retry
Если в предложении rescue выражения begin появляется retry, перезапустите с начала тела 1begin.
begin
do_something # exception raised
rescue
# handless error
retry #restart from beginning
Если повтор (retry) появляется в итераторе, блоке или теле выражения for, перезапускает вызов итератора. Аргументы итератора переоцениваются (re-evaluated).
for i in 1..5
retry if some_condition # перезапуск с i == 1
end
Пример:
#!/usr/bin/ruby
for i in 1..5
retry if i > 2
puts "Значение локальной переменной #{i}"
end
Это даст следующий результат и зайдет в бесконечный цикл:
Значение локальной переменной 1
Значение локальной переменной 2
Значение локальной переменной 1
Значение локальной переменной 2
.................................................................
# Ruby program of retry statement
# Using do loop
10.times do |i|
begin
puts "Iteration #{i}"
raise if i > 2
rescue
# Using retry
retry
end
end
=======https://www.geeksforgeeks.org/ruby-redo-and-retry-statement===========# Ruby program of retry statement
def geeks
attempt_again = true
p 'checking'
begin
# This is the point where the control flow jumps
p 'crash'
raise 'foo'
rescue Exception => e
if attempt_again
attempt_again = false
# Using retry
retry
end
end
end