Хэл Фултон - Программирование на языке Ruby

Здесь есть возможность читать онлайн «Хэл Фултон - Программирование на языке Ruby» — ознакомительный отрывок электронной книги совершенно бесплатно, а после прочтения отрывка купить полную версию. В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Москва, Год выпуска: 2007, ISBN: 2007, Издательство: ДМК Пресс, Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Программирование на языке Ruby: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Программирование на языке Ruby»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Ruby — относительно новый объектно-ориентированный язык, разработанный Юкихиро Мацумото в 1995 году и позаимствовавший некоторые особенности у языков LISP, Smalltalk, Perl, CLU и других. Язык активно развивается и применяется в самых разных областях: от системного администрирования до разработки сложных динамических сайтов.
Книга является полноценным руководством по Ruby — ее можно использовать и как учебник, и как справочник, и как сборник ответов на вопросы типа «как сделать то или иное в Ruby». В ней приведено свыше 400 примеров, разбитых по различным аспектам программирования, и к которым автор дает обстоятельные комментарии.
Издание предназначено для программистов самого широкого круга и самой разной квалификации, желающих научиться качественно и профессионально работать на Ruby.

Программирование на языке Ruby — читать онлайн ознакомительный отрывок

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Программирование на языке Ruby», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Мы воспользовались этим фактом, чтобы понять, какая ветвь исполнялась, и в зависимости от этого вывести то или другое сообщение. Сравнение fс nilпозволяет узнать, есть ли у переменной осмысленное значение. Этот прием применен только для демонстрации возможности: ясно, что при желании можно было бы поместить печать прямо внутрь предложения case.

Внимательный читатель заметит, что мы пользовались только «локальными» переменными. Это может показаться странным, так как, на первый взгляд, их областью видимости является вся программа. На самом деле они локальны относительно верхнего уровня программы. Глобальными они кажутся лишь потому, что в этой простой программе нет контекстов более низкого уровня. Но если бы мы объявили какие-нибудь классы или методы, то в них переменные верхнего уровня были бы не видны.

1.2.6. Циклы и ветвление

Потратим немного времени на изучение управляющих конструкций. Мы уже видели простое предложение ifи модификатор if. Существуют также парные структуры, в которых используется ключевое слово unless(в них также может присутствовать необязательная ветвь else), а равно применяемые в выражениях формы ifи unless. Все они сведены в таблицу 1.1.

Таблица 1.1. Условные предложения

Формы с if Формы с unless
if x < 5 then statement1 end unless x >= 5 then statement1 end
if x < 5 then statement1 else statement2 end unless x < 5 then statement2 else statement1 end
statement1 if y == 3 statement1 unless y != 3
x = if a>0 then b else c end x = unless a<=0 then с else b end

Здесь формы с ключевыми словами ifи unless, расположенные в одной строке, выполняют в точности одинаковые функции. Обратите внимание, что слово thenможно опускать во всех случаях, кроме последнего (предназначенного для использования в выражениях). Также заметьте, что в модификаторах (третья строка) ветви elseбыть не может.

Предложение caseв Ruby позволяет больше, чем в других языках. В его ветвях можно проверять различные условия, а не только сравнивать на равенство. Так, например, разрешено сопоставление с регулярным выражением. Проверки в предложении caseэквивалентны оператору ветвящегося равенства ( ===), поведение которого зависит от объекта. Рассмотрим пример:

case "Это строка символов."

when "одно значение"

puts "Ветвь 1"

when "другое значение"

puts "Ветвь 2"

when /симв/

puts "Ветвь 3"

else

puts "Ветвь 4"

end

Этот код напечатает Ветвь 3. Почему? Сначала проверяемое выражение сравнивается на равенство с двумя строками: "одно значение"и "другое значение". Эта проверка завершается неудачно, поэтому мы переходим к третьей ветви. Там находится образец, с которым сопоставляется выражение. Поскольку оно соответствует образцу, то выполняется предложение print. В ветви elseобрабатывается случай, когда ни одна из предшествующих проверок не прошла.

Если проверяемое выражение — целое число, то его можно сравнивать с целочисленным диапазоном (например, 3..8); тогда проверяется, что число попадает в диапазон. В любом случае выполняется код в первой подошедшей ветви.

В Ruby имеется богатый набор циклических конструкций. К примеру, whileи until— циклы с предварительной проверкой условия, и оба работают привычным образом: в первом случае задается условие продолжения цикла, а во втором — условие завершения. Есть также их формы с модификатором, как для предложений ifи unless. Кроме того, в модуле Kernelесть метод loop(по умолчанию бесконечный цикл), а в некоторых классах реализованы итераторы.

В примерах из таблицы 1.2 предполагается, что где-то определен такой массив list:

list = %w[alpha bravo charlie delta echo];

В цикле этот массив обходится и печатается каждый его элемент.

Таблица 1.2. Циклы

# Цикл 1 (while) # Цикл 2 (until)
i=0 while i < list.size do print "#{list[i]} " i += 1 end i=0 until i == list.size do print "#{list[i]} " i += 1 end
# Цикл 3 (for) # Цикл 4 (итератор 'each')
for x in list do print "#{x} " end list.each do |x| print "#{x} " end
# Цикл 5 (метод 'loop') # Цикл 6 (метод 'loop')
i = 0 n=list.size-1 loop do print "#{list[i]} " i += 1 break if i > n end i=0 n=list.size-1 loop do print "#{list[i]} " i += 1 break unless i <= n end
# Цикл 7 (итератор 'times') # Цикл 8 (итератор 'upto')
n=list.size n.times do |i| print "#{list[i]} " end n=list.size-1 0.upto(n) do |i| print "#{list[i]} " end
# Цикл 9 (for) # Цикл 10 ('each_index')
n=list.size-1 for i in 0..n do print "#{list[i]} " end list.each_index do |x| print "#{list[x]} " end

Рассмотрим эти примеры более подробно. Циклы 1 и 2 — «стандартные» формы циклов whileи until; ведут они себя практически одинаково, только условия противоположны. Циклы 3 и 4 — варианты предыдущих с проверкой условия в конце, а не в начале итерации. Отметим, что использование слов beginи endв этом контексте — просто грязный трюк; на самом деле это был бы блок begin/end (применяемый для обработки исключений), за которым следует модификатор whileили until. Однако для тех, кто желает написать цикл с проверкой в конце, разницы нет.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Программирование на языке Ruby»

Представляем Вашему вниманию похожие книги на «Программирование на языке Ruby» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Программирование на языке Ruby»

Обсуждение, отзывы о книге «Программирование на языке Ruby» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x