Шрифт:
Есть, конечно, и более практичные применения продолжений. Один из примеров — каркас
Проблема в том, что продолжение — «дорогая» операция. Необходимо сохранить состояние и потратить заметное время на переключение контекста. Если производительность для вас критична, прибегайте к продолжениям с осторожностью.
11.2.6. Хранение кода в виде объекта
Неудивительно, что Ruby предлагает несколько вариантов хранения фрагмента кода в виде объекта. В этом разделе мы рассмотрим объекты
Встроенный класс
Кроме того, Ruby автоматически создает объект Proc, когда метод, последний параметр которого помечен амперсандом, вызывается с блоком в качестве параметра:
В этом примере демонстрируется также применение квадратных скобок как синонима метода
Объект
Ruby позволяет также превратить метод в объект. Исторически для этого применяется метод
Начиная с версии Ruby 1.6.2, можно также применять метод
Явное связывание делает объект
11.2.7. Как работает включение модулей?
Когда модуль включается в класс, Ruby на самом деле создает прокси-класс, являющийся непосредственным родителем данного класса. Возможно, вам это покажется интуитивно очевидным, возможно, нет. Все методы включаемого модуля «маскируются» методами, определенными в классе.