Программирование на языке Ruby
Шрифт:
Отметим, что фактически добавлено три метода. Возможно, это противоречит вашим ожиданиям, но метод
Метод
Можно также следить за добавлением методов экземпляра модуля к объекту (с помощью метода
Обращение к
11.3.14. Определение чистильщиков для объектов
У классов в Ruby есть конструкторы (методы
Однако тем, кто переходит на Ruby с таких языков, как C++, этот механизм представляется необходимым — часто задается вопрос, как написать код очистки уничтожаемых объектов. Простой ответ звучит так: невозможно сделать это надежно. Но можно написать код, который будет вызываться, когда сборщик мусора уничтожает объект.
Этот код выводит следующее:
Подчеркнем, что к моменту вызова чистильщика объект уже фактически уничтожен. Попытка преобразовать идентификатор в ссылку на объект с помощью метода
Имейте в виду, что в Ruby применяется консервативный вариант сборки мусора по алгоритму пометки и удаления. Нет гарантии, что любой объект будет убран до завершения программы.
Однако все это может оказаться и ненужным. В Ruby существует стиль программирования, в котором для инкапсуляции работы с ресурсами служат блоки. В конце блока ресурс освобождается, и жизнь продолжается без помощи чистильщиков. Рассмотрим, например, блочную форму метода
Здесь в блок передается объект
Мы проверяем наличие блока. Если блок был передан, то мы вызываем его, передавая открытый файл. Делается это в контексте блока
11.4. Заключение
В этой главе были приведены примеры использования более сложных и даже экзотических механизмов ООП, а также решения некоторых рутинных задач. Мы видели, как реализуются некоторые паттерны проектирования. Познакомились мы и с API отражения в Ruby, продемонстрировали ряд интересных следствий динамической природы Ruby и некоторые трюки, возможные в динамическом языке.
Пришло время вернуться в реальный мир. Ведь ООП — не самоцель, а всего лишь средство достижения цели. Последняя же заключается в написании эффективных, безошибочных и удобных для сопровождения приложений.
Искусство невозможного (в 3-х томах)
Документальная литература:
биографии и мемуары
публицистика
рейтинг книги
Принцесса Торн
Любовные романы:
зарубежные любовные романы
рейтинг книги
Ты - наша
1. Наша
Любовные романы:
современные любовные романы
эро литература
рейтинг книги
Изменяющий-Механик. Компиляция. Книги 1-18
Собрание сочинений
Фантастика:
боевая фантастика
космическая фантастика
рейтинг книги
Последний рейд
5. Медорфенов
Фантастика:
фэнтези
аниме
рейтинг книги
За огнями маяков
Старинная литература:
прочая старинная литература
рейтинг книги
Добыча
Деловая литература:
о бизнесе популярно
рейтинг книги