Программирование на языке Ruby
Шрифт:
Для этого нужно определить метод
Отметим, что метод
Кстати, если метод
11.1.11. Метод allocate
Редко, но бывает, что нужно создать объект, не вызывая его конструктор (в обход метода
Метод
11.1.12. Модули
Для использования модулей в Ruby есть две основных причины. Первая — облегчить управление пространством имен; если поместить константы и методы в модули, то будет меньше конфликтов имен. Хранящийся таким образом метод (метод модуля) вызывается с указанием имени модуля, то есть без вызывающего объекта. Точно так же вызывается и метод класса. Увидев вызовы вида
Вторая причина более интересна: мы можем использовать модуль как примесь. Примеси — это способ реализации множественного наследования, при котором наследуется только интерфейс.
Мы уже говорили о методах модуля, а как насчет методов экземпляра? Модуль — это не класс,
Но оказывается, модуль может иметь методы экземпляра. Они становятся частью класса, который включил модуль директивой
Здесь модуль
А что происходит с методами модуля, если таковые определены? Если вы думаете, что они становятся методами класса, то ошибаетесь. Методы модуля не подмешиваются.
Но если такое поведение желательно, то его можно реализовать с помощью нехитрого трюка. Существует метод
Гримуар темного лорда VIII
8. Гримуар темного лорда
Фантастика:
боевая фантастика
альтернативная история
аниме
фэнтези
фантастика: прочее
попаданцы
рейтинг книги
Точка Бифуркации V
5. ТБ
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
Тихий Дон. Том 2
199. Библиотека всемирной литературы
Проза:
советская классическая проза
рейтинг книги
Барон нарушает правила
3. Закон сильного
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
Сабрина
Любовные романы:
современные любовные романы
рейтинг книги
Своевольная красавица
3. Кинстеры
Любовные романы:
исторические любовные романы
рейтинг книги
Линия огня
9. S.T.A.L.K.E.R.
Фантастика:
боевая фантастика
рейтинг книги
Избранное
Проза:
современная проза
рейтинг книги
Предсказание
Фантастика:
фэнтези
рейтинг книги