Klasse :: Meta :: Express

Klasse :: Meta :: Express ist ein Perl-Modul für präzise, ausdrucksstarke Erstellung von Klasse :: Meta-Klassen.
Jetzt downloaden

Klasse :: Meta :: Express Ranking & Zusammenfassung

Anzeige

  • Rating:
  • Lizenz:
  • Perl Artistic License
  • Preis:
  • FREE
  • Name des Herausgebers:
  • David Wheeler
  • Website des Verlags:
  • http://search.cpan.org/~dwheeler/

Klasse :: Meta :: Express Stichworte


Klasse :: Meta :: Express Beschreibung

Class :: Meta :: Express ist ein Perl-Modul für die präzise, ausdrucks Erstellung von Class :: Meta-Klassen. Class :: Meta :: Express ist ein Perl-Modul für die präzise, ausdrucksstarke Kreation von Class :: Meta classes.Synopsis Paket Mein :: Kontakt; verwenden Class :: Meta :: Express; Klasse {meta Kontakt => (default_type => 'string'); hat 'name'; hat Kontakt => (=> 1 erforderlich); } Dieses Modul bietet eine Schnittstelle prägnant noch expressiv zu Klassen mit Class :: Meta erstellen. Obwohl ich natürlich gern Class :: Meta bin, habe ich noch nie für die Erstellung von Klassen mit seiner Schnittstelle allzu begeistert war: My :: Thingy verpacken; verwenden Class :: Meta; BEGIN {# eine Klasse :: Meta-Objekt für diese Klasse erstellen. my $ cm = Klasse :: Meta-> new (key => 'Dingen'); In # Konstruktor. $ Cm-> add_constructor (name => 'new'); # Ein paar Attribute mit generierten Accessoren hinzufügen. $ Cm-> add_attribute (name => 'id' ist => 'integer' required => 1); $ Cm-> add_attribute (name => 'name', ist => 'string', required => 1); $ Cm-> add_attribute (name => 'Alter' ist => 'integer',); # Eine benutzerdefinierte Methode hinzufügen. $ Cm-> add_method (name => 'chk_pass', code => sub {return 'Code'},); $ Cm-> build; } Dieses Beispiel ist relativ einfach; es kann die ausführliche viel mehr bekommen. Aber auch noch, all die Methodenaufrufe waren ärgerlich. Ich meine, wer auch immer daran gedacht, mit einer objektorientierten Schnittstelle für die Deklaration einer Klasse? (Ach ja: ich.) Ich war nicht allein eine deklarative Schnittstelle zu wollen; Curtis Poe, mit meinem Segen, erstellt Class :: Meta :: Declare, die diese Syntax verwenden würde die gleiche Klasse zu erstellen: package My :: Thingy; Verwendung Klasse :: Meta :: Declare ': all'; Class :: Meta :: Declare-> new (# Erstellen Sie ein Klasse :: Meta-Objekt für diese Klasse. Meta => , hinzufügen # Konstruktor. Konstrukteuren => , # ein paar Attribute mit generierten Accessoren hinzufügen. Attribute => , hinzufügen # eine benutzerdefinierte Methode Methoden => );. Dieser Ansatz hat den Vorteil des Seins etwas knapper, und es ist deklarative, aber ich all die Einrückungen als störend empfinden; es ist schwer für mich, um herauszufinden, wo ich bin, vor allem, wenn ich eine Menge von Attributen zu definieren. Und schließlich alles, was ein String mit dieser Syntax ist, mit Ausnahme derjenigen, hässlich Nur-Lese-Skalare wie $ TYPE_INTEGER. Also ich nicht einfach sagen kann, wo ein Attribut endet und die nächste beginnt. Blies. Anforderungen: · Perl.


Klasse :: Meta :: Express Zugehörige Software

Efeu.

EFEU eignet sich für den Umgang mit Datenwürfeln, die besonders nützlich für den Bau von Datenlagern sind. ...

147

Herunterladen