Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Рассмотрим эти примеры более подробно. Циклы 1 и 2 — «стандартные» формы циклов
whileuntilbeginendwhileuntilНа мой взгляд, конструкции 3 и 4 — самый «правильный» способ кодирования циклов. Они заметно проще всех остальных: нет ни явной инициализации, ни явной проверки или инкремента. Это возможно потому, что массив «знает» свой размер, а стандартный итератор
eachforeachforeachВ циклах 5 и 6 используется конструкция
looploopKernelВ циклах 7 и 8 используется тот факт, что у массива есть числовой индекс. Итератор
timesuptoЦикл 9 — это вариант цикла
foreach_indexВ предыдущих примерах мы уделили недостаточно внимания вариантам циклов
whileloopperform_task() until finishedperform_task() while not finishedТакже из таблицы 1.2 осталось неясным, что циклы не всегда выполняются от начала до конца. Число итераций не всегда предсказуемо. Нужны дополнительные средства управления циклами.
Первое из них — ключевое слово
breakКлючевое слово
retrybegin-endforКлючевое слово
redoretrywhileuntilretryКлючевое слово
nextКак мы только что видели, итератор — важное понятие в Ruby. Но следует отметить, что язык позволяет определять и пользовательские итераторы, не ограничиваясь встроенными.
Стандартный итератор для любого объекта называется
eachforВ качестве примера рассмотрим многоцелевой итератор, который имитирует цикл с проверкой условия в конце (как в конструкции
do-whilerepeat-untildef repeat(condition) yield retry if not conditionendВ этом примере ключевое слово
yieldj=0repeat (j >= 10) do j += 1 puts jendС помощью
yielddef my_sequence for i in 1..10 do yield i endendmy_sequence {|x| puts x**3 }Отметим, что вместо фигурных скобок, в которые заключен блок, можно написать ключевые слова
doend1.2.7. Исключения
Как и многие другие современные языки, Ruby поддерживает исключения.
Исключения — это механизм обработки ошибок, имеющий существенные преимущества по сравнения с прежними подходами. Нам удается избежать возврата кодов ошибок и запутанной логики их анализа, а код, который обнаруживает ошибку, можно отделить от кода, который ее обрабатывает (чаще всего они так или иначе разделены).
Предложение
raiseraiseKernelfailraise # Пример 1raise "Произошла ошибка" # Пример 2raise ArgumentError # Пример 3
