Управление регистром

июня 25, 2008

В классе string есть множество методов управления регистром. В этом разделе мы
приведем их краткий обзор.
Метод downcase переводит символы всей строки в нижний регистр, а метод
upcase - в верхний:

si = “Бостонское чаепитие”
s2 = si.downcase # “бостонское чаепитие”
s3 = s2.upcase # “БОСТОНСКОЕ ЧАЕПИТИЕ”
Метод capitalize представляет первый символ строки в верхнем регистре, а
все остальные - в нижнем:

s4 = [...]

Читать далее →

Форматирование строк

июня 25, 2008

В Ruby, как и в языке С, для этой цели существует метод sprintf. Он принимает строку и список выражений и возвращает строку. Набор спецификаторов в форматной строке почти ничем отличается от принятого в функции sprintf (или printf)из библиотеки С.

name = “Боб”
age =28
str = sprintf(”Привет, %s… Похоже, тебе %d лет.”, name, age)
Спрашивается, зачем нужен этот метод, [...]

Читать далее →

Специализированное сравнение строк

июня 25, 2008

В язык Ruby уже встроен механизм сравнения строк: строки сравниваются в привычном
лексикографическом порядке (то есть на основе упорядочения, присущего
данному набору символов). Но при желании можно задать собственные правила
сравнения любой сложности.
Предположим, например, что мы хотим игнорировать английские артикли а,
an и the, если они встречаются в начале строки, а также не обращать внимания на
большинство знаков препинания. Для [...]

Читать далее →

Программирование CGI на Ruby

июня 25, 2008

Всякий, кто знаком с программированием для Web, хотя бы раз встречал аббревиатуру CGI (Common Gateway Interface - общий шлюзовой интерфейс). Спецификация CGI появилась на заре развития Web с целью обогатить взаимодействие между пользователем и Web-сервером. С тех пор были изобретены бесчисленные альтернативные технологии, но CGI все еще живет и прекрасно себя чувствует. Своим успехом и [...]

Читать далее →

Ruby и web-приложения

июня 25, 2008

Как ловко мы сплетаем сеть…
Сэр Вальтер Скотт, «Мармион»
Ruby - универсальный язык, его ни в коей мере нельзя считать исключительно «языком Web». Но, несмотря на это, одно из наиболее типичных его применений -создание приложений (да и вообще инструментов в широком смысле) для Web.
Существует множество способов разрабатывать приложения для Web на Ruby - от сравнительно небольших и [...]

Читать далее →

Несколько слов о стиле кода

июня 24, 2008

Маленький пример рефакторинга ruby-кода.
Исходный вариант:
hosts = []
# add all the site temporary domains
hosts << Site.find(:all).inject([]) do |collection, site|
collection << site.harmony_url
end
# add all the account subdomains
hosts << Account.find(:all).inject([]) do |collection, account|
collection << account.harmony_url
end
Как можно сделать лучше?
Да легко!
# site and account subdomains
hosts = []
hosts << Site.find(:all).collect(&:harmony_url)
hosts << Account.find(:all).collect(:&harmony_url)
Улучшений здесь, как вы видите, три:

Заменяем низкоуровневый inject на collect. [...]

Читать далее →

Наследование суперклассу

июня 23, 2008

Можно унаследовать класс, воспользовавшись символом <:
class Boojum < Snark
# …
end
Это объявление говорит, что класс Boojum является подклассом класса Snark или - что то же самое - класс Snark является суперклассом класса Boojum. Всем известно, что каждый буюм является снарком, но не каждый снарк - буюм.
Ясно, что цель наследования - расширить или специализировать функциональность. Мы хотим [...]

Читать далее →

Применение нескольких конструкторов

июня 19, 2008

В Ruby нет «настоящих» конструкторов, как в C++ или в Java. Сама идея, конечно, никуда не делась, поскольку объекты необходимо создавать и инициализировать, но реализация выглядит иначе.
В Ruby каждый класс имеет метод класса new, который вызывается для создания новых объектов. Метод new вызывает специальный определяемый пользователем метод initialize, который инициализирует атрибуты объекта, после чего new [...]

Читать далее →

Рутинные объектно-ориентированные задачи

июня 19, 2008

Of his quick objects hath the mind no pa?t,
Nor his own vision holds what it doth catch…
Вильям Шекспир, Сонет 113
Если вы вообще не знакомы с ООП, то эта глава вас ничему не научит. А если вы понимаете, что такое ООП в языке Ruby, то, наверное, ее и читать не стоит. Если понятия ООП не слишком [...]

Читать далее →

ООП и динамические механизмы в Ruby

июня 19, 2008

Как введение иррациональных чисел… стало удобным мифом,
упростившим законы арифметики… так физические объекты
и постулированные сущности делают наше восприятие реальности более
простым и завершенным… Концептуальная схема физических объектов
напоминает удобный миф, который проще, чем истина,
но при этом содержит тут и там частички истины.
Уиллард Ван Орман Квин
Это необычная глава. В большинстве других глав рассматривается какой-то конкретный аспект, например строки или [...]

Читать далее →
Эмуляторы. Сохранить игру от консоли neogeo с эмулятором для запуска игр .