Программирование на языке Ruby
Шрифт:
Это способ избежать обращения к методу
Метод
Истинная полезность метода
11.3.3. Динамическое создание экземпляра класса, заданного своим именем
Такой вопрос мы видели многократно. Пусть дана строка, содержащая имя класса; как можно создать экземпляр этого класса?
Правильный способ — воспользоваться методом
А если имена вложены? Как выясняется, следующий код не работает:
Дело в том, что метод
Такой код встречается часто (и демонстрирует интересное применение
11.3.4. Получение и установка переменных экземпляра
Отвечая на пожелание употреблять
Прежде всего, отметим, что имя переменной должно начинаться со знака
Не нарушает ли существование таких методов принцип инкапсуляции? Нет. Конечно, эти методы потенциально опасны. Пользоваться ими следует с осторожностью, а не при всяком удобном случае. Но нельзя говорить, что инкапсуляция нарушена, не видя, как эти инструменты применяются в конкретном случае. Если это делается обдуманно, ради ясно осознанной цели, то все хорошо. Если же цель состоит в том, чтобы нарушить проект или обойти неудачное проектное решение, это печально. Ruby намеренно предоставляет доступ к внутренним деталям объектов тем, кому это действительно нужно; ответственный программист не станет пользоваться свободой во вред.
11.3.5. Метод define_method
Помимо ключевого слова
Конечно, в Ruby практически все происходит во время выполнения. Если окружить определение метода обращениями к
Но внутри тела метода или в другом аналогичном месте нельзя заново открыть класс (если только это не синглетный класс). В таком случае в прежних версиях Ruby приходилось прибегать к помощи
Первая (ошибочная) попытка воспользоваться этим методом могла бы выглядеть так:
Поскольку
Сапер. Том IV
4. Сапер
Фантастика:
попаданцы
альтернативная история
рейтинг книги
Дорогами алхимии
2. Под знаком Песца
Фантастика:
альтернативная история
аниме
рейтинг книги
Барон нарушает правила
3. Закон сильного
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
Эволюционер из трущоб. Том 5
5. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
рейтинг книги
Темные тропы и светлые дела
3. Глэрд
Фантастика:
фэнтези
боевая фантастика
попаданцы
рейтинг книги
Хозяин Стужи 2
2. Злой Лед
Фантастика:
аниме
фэнтези
попаданцы
рейтинг книги
Эпоха Опустошителя. Том II
2. Вечное Ристалище
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
Кодекс Охотника. Книга XV
15. Кодекс Охотника
Фантастика:
попаданцы
аниме
рейтинг книги
Вернуть невесту. Ловушка для попаданки
1. Вернуть невесту
Любовные романы:
любовно-фантастические романы
рейтинг книги
Полигон
S.T.A.L.K.E.R.
Фантастика:
боевая фантастика
рейтинг книги