Objekt :: Lexical.

Syntaktikzucker für Easy Object Instanz Daten und mehr
Jetzt downloaden

Objekt :: Lexical. Ranking & Zusammenfassung

Anzeige

  • Rating:
  • Lizenz:
  • Perl Artistic License
  • Preis:
  • FREE
  • Name des Herausgebers:
  • Scott Walters
  • Website des Verlags:
  • http://search.cpan.org/~swalters/Math-Preference-SVD-0.01/lib/Math/Preference/SVD.pm

Objekt :: Lexical. Stichworte


Objekt :: Lexical. Beschreibung

Syntaktischer Zucker für Easy Object Instanz Daten und mehr Object :: Lexical ist ein Perl-Modul, das syntaktische Zucker zum Erstellen von Objekten bereitstellt. Normal Meine Variablen werden beispielsweise Daten verwendet. $ Dies wird automatisch aus dem Argumentstapel gelesen. Dies folgt "echte" OO-Sprachen, bei denen der Benutzercode sich nicht mit der Unterstützung der Sprache implementieren muss. Normaler OO-Perl-Code ist hässlich, schwer zu lesen, langweilig zu tippen und Fehler anfällig. Das $ Self- {Field}> Syntax ist umständlich und mit einem Objektfeld mit einem eingebauten Einbau, wie Push (), erfordert die Syntax über Anfänger Perl-Programmierer hinaus: Push @ {$ Self-Field}}, $ value>. Rechtschreibfeldnamen Falsche Ergebnisse in schweren Fehlern: Die Hash-Autovivicates, und keine "Variablen müssen deklariert werden" Warning Isded.Instance () gibt ein neues Objekt zurück, das das aktuelle Objekt unterteilt und enthält alle nur definierten Methoden. Das zurückgegebene Objekt ist eine gesegnete Symboltabelle (Stash-) Referenz, die für die meisten Zwecke wie eine gesegnete Hash-Referenz fungiert. Mit anderen Worten, es ist ein normales Objekt.Instance () nimmt ein optionales Argument: Der Name des Pakets, das das erstellte Objekt angehört Wenn die neue () -Methode den Klassennamen aus dem Argumentstapel liest, sollte dieser Klassenname an Instanz () übergeben werden, um die Erstellung von Unterklassen Ihrer Klasse zu unterstützen. Dies ist ähnlich dem Betrieb von Bless (), außer Instanz () las den Klassennamen aus dem Stapel für Sie, wenn Sie nicht. Lexisch definierte Methoden sollten nicht bewegt werden. Methoden definiert mit * Name = Sub {} und Subname {} wird nicht verschoben. Wenn Subroutinen die Seite des Sub New {} -Blocks erstellt werden, sollte diese Option angegeben werden, oder die Unterprogramme werden auf mysteriöse Weise verschwinden. "Noexport" gibt an, dass Methode () und Instanz () nicht in Ihren Namespace exportiert werden sollten. Um auf diese Funktionen zu gelangen, müssen Sie ihre Namen qualifizieren: Objekt :: Lexical :: Methode () und Objekt :: Lexical :: Instanz (). "Nowrap" Gibt an, dass Methoden in der Logik eingewickelt werden sollen, die dies automatisch $ liest, da sie in ihre neue Symboltabelle verschoben werden. Wenn Sie sich auf $ $ als $ _ beziehen möchten oder Sie es selbst verarbeiten möchten, oder Sie möchten, dass die Speicherausnutzung auf dem PAR mit normalen Objekten aufbewahren möchten, verwenden Sie diese. () Methoden (CodeRefs in meinen Variablen gehalten) und in die Symboltabelle eingelegte Methoden werden in einen neuen Namespace verschoben, der nur für diese Objektinstanz erstellt wurde. Ein dünner Wrapper wird in diesem Namespace um jeden Symboltabelleneintrag platziert, der den Verweis auf das aktuelle Objekt in eine ähnliche Variable namens $ thea liest. Ich kann von neuer () zurückgegebener Anzahl unabhängiger Objekte zurückgegeben werden. Durch Definieren von Methoden in der Seite Der Block der neuen () -Methode hat jedes zurückgegebene Objekt seine eigenen privaten Kopien jeder MY-Variablen. Dies verwendet das "Lambda-Verschluss" -Funktion von Perl. Ein Schließung ist der Code, der Verweise auf Variablen enthält. In diesem Beispiel wird $ Counter außerhalb des Geltungsbereichs gehen, aber Inc, Dec, Inc3X alle behalten einen Hinweis darauf. Das nächste Mal, wenn neu () ausgeführt wird, wird ein neuer $ counter lexical erstellt, und neue Methoden werden an erstellt, dass deren Bezug genommen wird Code, verschieben Sie den Code in Methoden von Subroutinen und verwandeln Sie einfach alte Module in Objekte.Synopsis verwenden Objekt: lexikal; Verwenden Sie sub :: lexical; sub neuer {mein $ counter; Unsere $ Dies; Mein Sub Inc {$ counter ++; } mein sub dec {$ counter--; } My Sub Inc3x {$ this-> inc () für (1..3); } Instanz (); } Anforderungen: · Perl.


Objekt :: Lexical. Zugehörige Software