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