Ruby Циклы
Циклы в Ruby используются для многократного выполнения одного и того же блока кода. В этой главе будут подробно описаны все операторы циклов, поддерживаемые Ruby.
Ruby whileОператор
Синтаксис
или
Синтаксис
КогдаусловиеКогда истинно, выполнитькод。
В синтаксисе do или : можно опустить. Но если вы хотите записать выражение while в одну строку, вы должны использовать do или :, чтобы отделить условие от блока кода.
Пример
Попробуйте »
Вывод приведенного выше примера:
在循环语句中 i = 0 在循环语句中 i = 1 在循环语句中 i = 2 在循环语句中 i = 3 在循环语句中 i = 4
Ruby whileМодификатор
Синтаксис
КогдаусловиеКогда истинно, выполнитькод。
ЕслиwhileМодификатор следует за ... безrescueили предложения ensurebeginпосле инструкции,кодбудетусловновыполнен один раз до вычисления условия.
Пример
Попробуйте »
Вывод приведенного выше примера:
在循环语句中 i = 0 在循环语句中 i = 1 在循环语句中 i = 2 在循环语句中 i = 3 在循环语句中 i = 4
Ruby untilОператор
Синтаксис
КогдаусловиеКогда ложно, выполнитькод。
В синтаксисе do можно опустить. Но если вы хотите записать выражение until в одну строку, необходимо использовать do, чтобы отделить условие от блока кода.
Пример
Попробуйте »
Вывод приведенного выше примера:
在循环语句中 i = 0 在循环语句中 i = 1 在循环语句中 i = 2 在循环语句中 i = 3 在循环语句中 i = 4 在循环语句中 i = 5
Ruby untilМодификатор
Синтаксис
КогдаусловиеКогда ложно, выполнитькод。
Еслиuntilмодификатор следует за ... безrescueили предложения ensurebeginпосле инструкции,кодбудетусловновыполнен один раз до вычисления условия.
Пример
Попробуйте »
Вывод приведенного выше примера:
在循环语句中 i = 0 在循环语句中 i = 1 在循环语句中 i = 2 在循环语句中 i = 3 在循环语句中 i = 4 在循环语句中 i = 5
Ruby forОператор
Синтаксис
Сначала вычислите выражение, чтобы получить объект, затем длявыражениекаждого элемента в нём выполните один разкод。
Пример
Попробуйте »
Здесь мы определили диапазон 0..5. Инструкция for i in 0..5 позволяет значению i изменяться от 0 до 5 (включая 5).
Вывод приведенного выше примера:
局部变量的值为 0 局部变量的值为 1 局部变量的值为 2 局部变量的值为 3 局部变量的值为 4 局部变量的值为 5
for...inЦикл почти в точности эквивалентен следующему:
Однако цикл for не создаёт новую область видимости для локальных переменных.
В этом синтаксисе do можно опустить. Но если вы хотите записать выражение for в одну строку, необходимо использовать do, чтобы отделить условие от блока кода.
Пример
Попробуйте »
Вывод приведенного выше примера:
局部变量的值为 0 局部变量的值为 1 局部变量的值为 2 局部变量的值为 3 局部变量的值为 4 局部变量的值为 5
Ruby breakОператор
Синтаксис
Завершает самый внутренний цикл. Если вызван внутри блока, он завершает метод, связанный с блоком (метод возвращает nil).
Пример
Попробуйте »
Вывод приведенного выше примера:
局部变量的值为 0 局部变量的值为 1 局部变量的值为 2
Ruby nextОператор
Синтаксис
Переходит к следующей итерации цикла. Если вызван внутри блока, он завершает выполнение блока (yieldвыражение возвращает nil).
Пример
Попробуйте »
Вывод приведенного выше примера:
局部变量的值为 2 局部变量的值为 3 局部变量的值为 4 局部变量的值为 5
Ruby redoОператор
Синтаксис
Перезапускает текущую итерацию самого внутреннего цикла, не проверяя условие цикла. Если вызван внутри блока, он перезапускаетyieldилиcall。
Пример
Это приведёт к следующему результату и войдёт в бесконечный цикл:
局部变量的值为 0 局部变量的值为 0 ............................
Ruby retryОператор
Примечание: версии 1.9 и более поздние не поддерживают использование retry в циклах.
Синтаксис
Еслиretryпоявляется в предложении rescue выражения begin, то выполнение перезапускается с начала тела begin.
Если retry появляется внутри итерации, блока или тела выражения for, то он перезапускает вызов итерации. Аргументы итерации вычисляются заново.
Пример
Это приведёт к следующему результату и войдёт в бесконечный цикл:
局部变量的值为 1 局部变量的值为 2 局部变量的值为 1 局部变量的值为 2 局部变量的值为 1 局部变量的值为 2 ............................Другие расширения