Частина вступна, не обов'язкова до прочитання, не несе в собі цінної інформації
Трохи людей які ніколи не грали в настільні економічні ігри, такі як монополія, ринок, мільйонер. Ми з друзями грали в них дні на проліт. Згодом, після зазубрювання всіх правил, і десятків зіграних партій, хотілося чогось більшого. І ми почали малювати гри самі. Спочатку маленькі, і в більшій мірі копіюють можливості тих ігор, що ми виділи раніше, але потім приходили і свої ідеї. В кінці доходило до того, що гра була розташована на 9 аркушах формату А4, а її правила були настільки нестерпними до новачків, що крім нас ніхто не міг навчитися в неї грати (хоча в монополію зі мною грали батьки). Там було багато всього, будівництво, економіка, ігрова взаємодія (наприклад підстави або взаємодопомога). Десятки видів зброї, машин. Щоб стріляти потрібні були патрони. З деякими пораненнями можна було продовжувати грати, з іншими шлях до лікарні, і т.п.
Гра тривала багато годин, і якщо пора було по домівках, ми виходили з кімнати, а я не дозволяв нікому наближатися до гри, щоб ніхто не переплутав всі наші предмети і фішки.
В даний момент я задав собі питання, чому не спробувати відтворити, хоч малу частину тих можливостей, але не на папері, а в вигляді комп'ютерної програми.
І в цій статті я хочу поговорити про дії. тобто про якісь здібності гравців, які змінюють різні властивості гри (правила). Від цього і будемо відштовхуватися.
частина технічна
Минулого разу ми дізналися, що таке декоратори і як вони реалізовані в TypeScript. Ми знаємо, як працювати з декораторами класів, властивостей і методів.
У цій статті ми розповімо про:
- Останній залишився тип декораторів - декоратор параметра
- Реалізацію фабрики декораторів
- Реалізацію конфігуруються декораторів
У процесі опису чергового набору тестів для модуля Node.js зловив себе на думці "знову перевірка типів". Кожен параметр методу класу, кожне властивість встановлюється за допомогою сетера треба перевіряти. Можна звичайно просто забити або доповнювати все кодом реалізують перевірки або спробувати описати всі декораторами. Але в цей раз зробимо трохи іначе.Чітать повністю »
- Частина 1: Декоратори методів
- Частина 2: Декоратори властивостей і класів
- Частина 3: Декоратори параметрів і фабрика декораторів
- Частина 4: Серіалізация типів і metadata reflection API
У попередній статті ми з'ясували, які типи декораторів ми можемо використовувати в TypeScript.
Ми також дізналися, як реалізувати декоратор методу і відповіли на основні питання про те, як декоратори працюють в TypeScript:
- Як вони викликаються?
- Хто передає в них аргументи?
- Де оголошена функція __decorate?
Від перекладача: TypeScript - досить молодий і активно розвивається мова. На жаль, в російськомовній частині Інтернету про нього досить мало інформації, що не сприяє його популярності.
Багато можливості, які зараз реалізовані в ES6, значно раніше з'явилися саме в TypeScript. Більш того, деякі можливості і запропоновані стандарти ES7 також мають експериментальну реалізацію в цій мові. Про одну з них, що з'явилася порівняно недавно - декоратор - і піде мова.
Python: Функції як об'єкти
Що б зрозуміти що таке декоратори, для початку ви повинні зрозуміти, що функції в python - це об'єкти. Дане розуміння дуже важливо. Давайте розберемо це на простому прикладі:
Вирішив поділитися своїм баченням і напрацюваннями щодо реалізації python-style декораторів в PHP.
Як завлекалочки невеликий приклад використання на зображенні справа. Виводить (після реалізації логіки самих декораторів):
Останнім часом доводиться досить багато працювати з Python. Вирішуючи одну з поточних завдань, виникла необхідність всередині функції-декоратора перевірити задекорований чи декорується метод іншим декоратором. На жаль, стандартні засоби рефлексії мови не дозволяють це зробити. Точніше, використовуючи, наприклад, модуль inspect зі стандартної бібліотеки це зробити можна, але аж надто не подобався такий підхід.
Від перекладача: пропоную вам переклад початку презентації Michael Fairley - Exing Ruby with Ruby. Я перевів тільки першу частину з трьох, тому що вона має максимальні практичні цінність і користь, на мій погляд. Проте, настійно рекомендую ознайомитися з повною презентацією, в якій крім Python наводяться приклади запозичення фішок з Haskell і Scala.
декоратори функції
В Python є така штука - декоратори, яка представляє собою синтаксичний цукор для додавання в методи і функції шматочків часто респонденти користуються послугами функціональності. Зараз я покажу вам деякі приклади того, що таке декоратори і чому вони могли б бути корисні і в Ruby.
Раніше я дуже багато працював з Python і декоратори функції безумовно є тим, чого мені так не вистачає з тих пір, і крім того тим, що може допомогти практично всім нам зробити наш код на Ruby чистіше.