Шрифт:
11.3.1. Динамическая интерпретация кода
Глобальная функция
Пусть на вход подаются следующие строки:
Тогда в результате мы получим такой хэш:
В Ruby есть еще три метода, которые интерпретируют код «на лету»:
Метод
Ruby ассоциирует локальные переменные с блоками, с определениями высокоуровневых конструкций (класса, модуля и метода) и с верхним уровнем программы (кодом, расположенным вне любых определений). С каждой из этих областей видимости ассоциируются привязки переменных и другие внутренние детали. Наверное, самым главным потребителем информации о привязках является программа
Можно инкапсулировать текущую привязку в объект с помощью метода
Интересно, что информация о наличии блока, ассоциированного с методом, сохраняется как часть привязки, поэтому возможны такие трюки:
11.3.2. Метод const_get
Метод
Это способ избежать обращения к методу
Метод
Истинная полезность метода
11.3.3. Динамическое создание экземпляра класса, заданного своим именем
Такой вопрос мы видели многократно. Пусть дана строка, содержащая имя класса; как можно создать экземпляр этого класса?
Правильный способ — воспользоваться методом