O parte din introducere, care nu este necesară pentru a citi, nu are în sine informații valoroase
Puțini oameni care nu au jucat niciodată un joc economic de masă, cum ar fi un monopol, o piață, un milionar. Prietenii mei și cu mine am jucat în zilele lor pentru a zbura. De-a lungul timpului, după memorarea tuturor regulilor și a zeci de jocuri jucate, am vrut ceva mai mult. Și am început să desenăm jocurile noi înșine. În primul rând, mici și, într-o măsură mai mare, copierea posibilităților acelor jocuri pe care le-am alocat mai devreme, dar apoi au venit propria lor idee. În cele din urmă sa ajuns la concluzia că jocul a fost plasat pe 9 foi A4, iar regulile sale erau atât de intolerante pentru noii veniți încât nimeni altcineva nu putea învăța să îl joace (deși părinții mei au jucat monopolul). Au fost multe lucruri, construcția, economia, interacțiunea cu jocurile (de exemplu, încadrarea sau asistența reciprocă). Zeci de arme, mașini. Pentru a trage cartușele necesare. Cu unele leziuni a fost posibil să continue jocul, cu alții drumul spre spital etc.
Jocul a durat multe ore, iar dacă a venit timpul să ne întoarcem acasă, am părăsit încăperea și nu am permis nimănui să se apropie de joc, astfel încât nimeni să nu confunde toate articolele și jetoanele.
În prezent, m-am întrebat de ce nu încerc să recreez, chiar și o mică parte din aceste oportunități, dar nu pe hârtie, ci sub forma unui program de calculator.
Și în acest articol vreau să vorbesc despre acțiuni. adică despre unele abilități ale jucătorilor care schimbă diferitele proprietăți ale jocului (reguli). Din aceasta se va construi.
O parte din tehnică
Ultima dată când am aflat ce decoratori sunt și cum sunt implementați în TypeScript. Știm cum să lucrăm cu decoratori de clasă, proprietăți și metode.
În acest articol vom vorbi despre:
- Ultimul tip de decoratori rămas este decoratorul de parametri
- Implementarea fabricii de decoratori
- Implementarea decoratorilor configurați
În procesul de descriere a următorului set de teste pentru modulul Node.js, m-am trezit gândindu-mă "verificarea tipului din nou". Fiecare parametru al metodei clasei, fiecare proprietate stabilită cu ajutorul setterului, trebuie verificată. Puteți, desigur, să înscrieți sau să adăugați totul la codul care implementează verificările sau să încercați să descrieți toți decoratorii. Dar de data aceasta vom face un pic diferit.
- Partea 1: Decoratorii metodelor
- Partea 2: Decoratori de proprietăți și clase
- Partea 3: Fabrica de decoratori și decoratori
- Partea 4: API pentru serializarea și reflectarea metadatelor
În articolul precedent, am aflat ce tipuri de decoratoare putem folosi în TypeScript.
De asemenea, am învățat cum să implementăm decoratorul metodei și am răspuns la întrebările de bază despre cum funcționează decoratorii în TypeScript:
- Cum se cheamă ei?
- Cine le oferă argumente?
- Unde este declarată funcția __decorate?
De la traducator: TypeScript este un limbaj destul de tanar si in curs de dezvoltare. Din păcate, în partea de internet a limbii rusești există foarte puține informații despre aceasta, ceea ce nu contribuie la popularitatea acesteia.
Multe dintre caracteristicile care sunt acum implementate în ES6, au apărut mult mai devreme în TypeScript. În plus, unele caracteristici și standardele propuse pentru ES7 au și o implementare experimentală în această limbă. Despre unul dintre ei, care a aparut relativ recent - decoratori - si vor fi discutate.
Python: Funcționează ca obiecte
Pentru a înțelege ce decoratori sunt, mai întâi trebuie să înțelegeți că funcțiile din Python sunt obiecte. Această înțelegere este foarte importantă. Să examinăm într-un exemplu simplu:
Am decis să împărtășesc viziunea și experiența mea cu privire la implementarea decoratorilor în stil python în PHP.
În calitate de zavlekalochki un exemplu mic de utilizare în imagine la dreapta. Ieșiri (după implementarea logicii decoratorilor înșiși):
Ultima dată când trebuie să lucrezi destul de mult cu Python. Rezolvind una dintre sarcinile actuale, a existat o nevoie în interiorul funcției de decorator pentru a verifica dacă metoda decorată a fost decorată cu un alt decorator. Din păcate, mijloacele standard de reflexie lingvistică nu permit acest lucru. Mai precis, folosind, de exemplu, modulul de inspectare din biblioteca standard, acest lucru se poate face, dar nu prea i-a plăcut această abordare.
De la traducator: Vă sugerez să traduceți începutul prezentării Michael Fairley - Exing Ruby cu Ruby. Am tradus doar prima parte din trei, pentru că are, în opinia mea, valoarea maximă practică și beneficii. Cu toate acestea, vă recomandăm cu insistență să citiți prezentarea completă, care, pe lângă Python, oferă exemple de chipsuri de împrumut de la Haskell și Scala.
Funcționari decoratori
În Python, există un astfel de lucru - decoratorii, care este zahăr sintactic pentru adăugarea la metodele și funcțiile pieselor de funcționalitate frecvent utilizate. Acum vă voi arăta câteva exemple despre ceea ce sunt decoratorii și de ce ar putea fi folositori în Ruby.
Am muncit foarte mult cu Python, iar decoratorii de funcții sunt cu siguranță ceva care am lipsit până acum și, în plus, asta ne poate ajuta aproape pe toți să facem codul nostru mai curat în Ruby.