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