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