Литмир - Электронная Библиотека
Мозгин Владимир
Написал 6 мая 2016, 11:36
#см2016 #плюс1книга #ruby
И так прочитал первую часть книги Ruby Metaprogramming 2.0
стр 120, но на англ + код. Книга заставила посмотреть изнутри как работает тот код который я пишу и использую. Рассмотрел приемы:
1) Around alias - позволяет вызывать оригинал переопределенного используя алиас на него
2) Blank Slate - удаляет методы из оббекта превращая его в призрачный метод, идея наследоваться от BasicObject
3) Class Extension - определения класса как примись к синглтон классу - с этим надо разбираться подробнее ибо затрагивает ruby очень глубоко - мне пока не хватает опыта осознать как это работает
4) Class instanse variable - вариант создания переменной класса, используя singleton method
5) Class Macro - использование class - как вариант определения класа, техника singletone class ов
6) Clean room - использовать обьект как окружение, в которое передается блок
7) Code Processor - использования когда который запускает код из строки - eval - и все вытекающие
8) Context Probe - пробиваем контекст с помощью instanse_eval и блоков - позволяет доставать private методы
9) Deferred Evaluation - прием позволяет хранить контекст и передавать его при помощи proc и lamda
10) Dinamic Dispatch - позволяет решать какой метод вызывать на этапе выполнения
11) Dynamic Method - позволяет создавать нужные методы на этапе выполнения программы
12) Dynamic Proxy - позволяет динамически перенаправлять вызов метода в другие обьекты
13) Flat scope - Позволяет расшаривать обьекты между двумя контекстами используя instance_eval
14) Ghost method - призрачные методы, используя method_mithing
15) Hook methods - переопределения методов перехватывая события обьектов
16) Kernel method - создание методов доступных у всех обьектов, за счет определения их в модуле ядра
17) Lazy Instance variable - не поддалось моему пониманию
18) Mimic method - не поддалось моему пониманию
19) Monkey Patch - переопределение методов
20) Namespace - ограничения одинаково названных методов и классов запихивая их в уникальное окружение
21) Object Extension - определение синглтон методов как примись в обьект синглтон класса
22) Open Class - прием позволяющий расширять поведение уже написанных классов
23) Prepending Wrap - создания оберток над методами - используя Singleton class и prepend
24) Refinement - расширения класса в определенном месте, используя миксины и refine
25) Refinement Wrapper - см 24 - прием когда используем вызов переопределенного метода или нового метода расширяющего класс
26) Sand box - изоляция кода в окружении при помощи lamda { здесь код который хотим изолировать }.call - позволяет аккуратно работать с глобальными переменными
27) Scope Gate - показывает изоляцию контекстов с помощью ключевых слов в ruby - class module def
28) Shared scope - позволяет шарить контексты - тут наши любимые lamda and proc

1я часть книги дала просто огромный набор инструментов и понимания как оно работает изнутри, 2я часть покажет как это используется в rails
Вернуться к записи на стену
Чтобы оставить свой комментарий вам нужно зайти на сайт или зарегистрироваться

{"id":"52158","o":30}