Программирование на языке Ruby
Шрифт:
Часто мы хотим каким-то образом восстановиться после ошибки. В этом поможет ключевое слово
Наконец, иногда необходим код, который «подчищает» что-то после выполнения блока
Код, помещенный внутрь части
Исключения можно перехватывать еще двумя способами. Во-первых, существует форма
Кроме того, тело определения метода представляет собой неявный блок
На этом мы завершаем как обсуждение обработки исключений, так и рассмотрение основ синтаксиса и семантики в целом.
У Ruby есть многочисленные аспекты, которых мы не коснулись. Оставшаяся часть главы посвящена более развитым возможностям языка, в том числе рассмотрению ряда практических приемов, которые помогут программисту среднего уровня научиться «думать на Ruby».
1.3. ООП в Ruby
В языке Ruby есть все элементы, которые принято ассоциировать с объектно-ориентированными языками: объекты с инкапсуляцией и сокрытием данных, методы с полиморфизмом и переопределением, классы с иерархией и наследованием. Но Ruby идет дальше, добавляя ограниченные возможности создания метаклассов, синглетные методы, модули и классы-примеси.
Похожие идеи, только под иными именами, встречаются и в других объектно-ориентированных языках, но одно и то же название может скрывать тонкие различия. В этом разделе мы уточним, что в Ruby понимается под каждым из элементов ООП.
1.3.1. Объекты
В Ruby все числа, строки, массивы, регулярные выражения и многие другие сущности фактически являются объектами. Работа программы состоит в вызове методов разных объектов:
В Ruby каждый объект представляет собой экземпляр какого-то класса. Класс содержит реализацию методов:
Помимо инкапсуляции собственных атрибутов и операций объект в Ruby имеет уникальный идентификатор:
Этот идентификатор объекта обычно не представляет интереса для программиста.
1.3.2. Встроенные классы
Свыше 30 классов уже встроено в Ruby. Как и во многих других объектно-ориентированных языках, в нем не допускается множественное наследование, но это еще не означает, что язык стал менее выразительным. Современные языки часто построены согласно модели одиночного наследования. Ruby поддерживает модули и классы-примеси, которые мы обсудим в следующей главе. Также реализованы идентификаторы объектов, что позволяет строить устойчивые, распределенные и перемещаемые объекты.
Для создания объекта существующего класса обычно используется метод
Однако не всегда его обязательно вызывать явно. В частности, при создании объекта String можно и не упоминать этот метод:
Ссылки на объекты хранятся в переменных. Выше уже отмечалось, что сами переменные не имеют типа и не являются объектами — они лишь ссылаются на объекты.
Из этого правила есть исключение: небольшие неизменяемые объекты некоторых встроенных классов, например
При присваивании переменных ссылки на объекты обобществляются.
После выполнения присваивания
Если объект изменяемый, то модификация, примененная к одной переменной, отражается и на другой:
Однако новое присваивание любой из этих переменных не влияет на другую:
Русские горки. Конец Российского государства
Великие противостояния
Научно-образовательная:
история
политика
рейтинг книги
Боярин
3. Ночь Сварога
Приключения:
исторические приключения
рейтинг книги
Эпоха Опустошителя. Том V
5. Вечное Ристалище
Фантастика:
аниме
фэнтези
попаданцы
рейтинг книги
Экспансия – I
10. Штирлиц
Детективы:
политические детективы
рейтинг книги
Самоучитель UML
Компьютеры и Интернет:
программирование
прочая компьютерная литература
рейтинг книги
Удельная. Очерки истории
Всё о Санкт-Петербурге
Научно-образовательная:
история
культурология
рейтинг книги
Собрание сочинений в 15 томах. Том 7
Фантастика:
научная фантастика
рейтинг книги
Чехов
1. Адвокат Чехов
Фантастика:
фэнтези
боевая фантастика
альтернативная история
рейтинг книги
Темный карнавал (сборник)
1. Сборники рассказов Рэя Брэдбери
Фантастика:
социально-философская фантастика
научная фантастика
ужасы и мистика
мистика
сказочная фантастика
рейтинг книги
Последний Паладин. Том 5
5. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
Туманы Авалона
Шедевры фантастики
Фантастика:
фэнтези
альтернативная история
рейтинг книги