Object :: lexicaal

Syntactische suiker voor eenvoudige object-instantiegegevens en meer
Download nu

Object :: lexicaal Rangschikking & Samenvatting

Advertentie

  • Rating:
  • Vergunning:
  • Perl Artistic License
  • Prijs:
  • FREE
  • Naam uitgever:
  • Scott Walters
  • Uitgever website:
  • http://search.cpan.org/~swalters/Math-Preference-SVD-0.01/lib/Math/Preference/SVD.pm

Object :: lexicaal Tags


Object :: lexicaal Beschrijving

Syntactische suiker voor eenvoudig object-instantie-gegevens en meer Object :: Lexical is een PERL-module die syntactische suiker biedt om objecten te maken. Normaal My Variabelen worden bijvoorbeeld gegevens gebruikt. $ Dit wordt automatisch afgelezen van de argumentstack. Dit volgt "Real" OO-talen, waar gebruikerscode zichzelf niet bezighouden met het helpen bij het helpen van de taal implementeren van objecten. Normale OO PERL-code is lelijk, moeilijk te lezen, vervelend om te typen en error te vatten. Het SYPTAX $ SELD- {FIELD}> is omslachtig en met behulp van een objectveld met een ingebouwde, zoals Push (), vereist Syntaxis Beyond Novice Perl-programmeurs: Push @ {$ self- {field}}, $ VALUE>. Spellingsveldnamen Verkeerd resulteert in moeilijk om bugs te vinden: de hash-autovicicaten, en geen "variabelen moeten worden aangegeven" WAARSCHUWING WORDT GESLOTEN.Instance () Retourneert een nieuw object dat het huidige object subclasseert en alle net-gedefinieerde methoden bevat. Het geretourneerde object is een gezegende symbooltabel (STASH)-referentie, die functioneert als een gezegende hash-referentie voor de meeste doeleinden. Met andere woorden, het is een normaal object.Instance () neemt een optioneel argument: de naam van het pakket dat het object wordt gemaakt, is om te horen. Als de nieuwe () methode de klasse-naam van de ARGUMENT-stapel uitlaat, moet deze klassaam worden doorgegeven aan instantie (), om de creatie van subklassen van uw klas te ondersteunen. Dit is vergelijkbaar met de werking van zegen (), behalve exemplaar () zal de klasnaam van de stapel van de stapel voor u lezen als u het niet doet. De gebruikmethode van het gebruik :: Lexicale lijn neemt optionele argumenten: "Nononlex" specificeert dat niet- Lexisch gedefinieerde methoden moeten niet worden verplaatst. Methoden gedefinieerd met * naam = sub {} en subnaam {} worden niet verplaatst. Als subroutines zijn gemaakt van kant van het subnieuw {} -blok, moet deze optie worden opgegeven, of anders zullen de subroutines mysterieus verdwijnen. "NoExport" geeft aan dat methode () en instantie () niet in uw naamruimte moet worden geëxporteerd. Om bij deze functies te komen, moet u hun namen kwalificeren: Object :: Lexical :: Methode () en Object :: Lexical :: Instrument (), respectievelijk. "Nowrap" Geeft aan dat methoden moeten worden ingepakt in logica die $ dit automatisch leest, omdat ze worden verplaatst naar hun nieuwe symbooltafel. Als u deze als $ _ wilt raadplegen, of u wilt het zelf verwerken, of u wilt geheugengebruik op PAR met normale objecten, gebruikt u deze.Instance () is het hart van deze module: Lexical Scoped METHODEN (CODEEREFS GEHOUDEN IN MIJN VARIABELEN) EN METHODEN IN DE SYMYCE TABLE worden verplaatst naar een nieuwe naamruimte die alleen voor dat object-exemplaar is gemaakt. Een dunne wikkel wordt rond elk symbooltabelinvoer geplaatst in deze naamruimte die de verwijzing naar het huidige object leest in een onze variabele genaamd $ dit. Ieder aantal onafhankelijke objecten kan worden geretourneerd door nieuw (). Door methoden in de zijkant te definiëren het blok van de nieuwe () -methode, heeft elk geretourneerd object zijn eigen exemplaren van elk mijn variabele. Dit gebruikt de functie "Lambda-sluiting" van PERL. Een sluiting is code die verwijzingen naar variabelen bevat - in dit voorbeeld gaat $ aanrecht uit de reikwijdte, maar Inc, DEC, INC3X houden er alles aan. De volgende keer wordt nieuwe () uitgevoerd, er wordt een nieuwe $ -teller-lexicaal gemaakt en er worden nieuwe methoden gemaakt die verwijzing daarvoor dient. Dit dient om de rommelige $ this-{counter} ++> syntaxis te vermijden, waardoor het gemakkelijker is voor de refactor Code, verplaats code in methoden uit subroutines en draai de gewone oude modules in Objects.Synopsis Gebruik Object :: Lexical; Gebruik sub :: lexicaal; sub nieuw {mijn $ teller; onze $ dit; mijn sub incl {$ counter ++; } mijn sub december {$ counter--; } My SUB INC3X {$ this-> inc () voor (1..3); } voorbeeld(); } Vereisten: · Perl


Object :: lexicaal Gerelateerde software