Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Рассмотрим эти примеры более подробно. Циклы 1 и 2 — «стандартные» формы циклов
while
until
begin
end
while
until
На мой взгляд, конструкции 3 и 4 — самый «правильный» способ кодирования циклов. Они заметно проще всех остальных: нет ни явной инициализации, ни явной проверки или инкремента. Это возможно потому, что массив «знает» свой размер, а стандартный итератор
each
for
each
for
each
В циклах 5 и 6 используется конструкция
loop
loop
Kernel
В циклах 7 и 8 используется тот факт, что у массива есть числовой индекс. Итератор
times
upto
Цикл 9 — это вариант цикла
for
each_index
В предыдущих примерах мы уделили недостаточно внимания вариантам циклов
while
loop
perform_task() until finished
perform_task() while not finished
Также из таблицы 1.2 осталось неясным, что циклы не всегда выполняются от начала до конца. Число итераций не всегда предсказуемо. Нужны дополнительные средства управления циклами.
Первое из них — ключевое слово
break
Ключевое слово
retry
begin-end
for
Ключевое слово
redo
retry
while
until
retry
Ключевое слово
next
Как мы только что видели, итератор — важное понятие в Ruby. Но следует отметить, что язык позволяет определять и пользовательские итераторы, не ограничиваясь встроенными.
Стандартный итератор для любого объекта называется
each
for
В качестве примера рассмотрим многоцелевой итератор, который имитирует цикл с проверкой условия в конце (как в конструкции
do-while
repeat-until
def repeat(condition)
yield
retry if not condition
end
В этом примере ключевое слово
yield
j=0
repeat (j >= 10) do
j += 1
puts j
end
С помощью
yield
def my_sequence
for i in 1..10 do
yield i
end
end
my_sequence {|x| puts x**3 }
Отметим, что вместо фигурных скобок, в которые заключен блок, можно написать ключевые слова
do
end
1.2.7. Исключения
Как и многие другие современные языки, Ruby поддерживает исключения.
Исключения — это механизм обработки ошибок, имеющий существенные преимущества по сравнения с прежними подходами. Нам удается избежать возврата кодов ошибок и запутанной логики их анализа, а код, который обнаруживает ошибку, можно отделить от кода, который ее обрабатывает (чаще всего они так или иначе разделены).
Предложение
raise
raise
Kernel
fail
raise # Пример 1
raise "Произошла ошибка" # Пример 2
raise ArgumentError # Пример 3