Älg (Perl)
Moose är en förlängning av det objektorienterade delsystemet för Perl 5. Lägger till moderna OOP-faciliteter till Perl, Moose inspirerades av CLOS , Perl 6 och många andra språk [1] som Smalltalk , Java , BETA , OCaml , Ruby och andra [2] .
Funktioner
Objektorienterad programmering i Moose, som Perl 6 , bygger, förutom klasser och objekt, på mekanismen roller , ett av alternativen till multipelt arv (som dock också stöds).
Attribut ( klassegenskaper ) för klasser stöder delegering och lat initialisering .
Roller är egenskapsbaserade och utför samma roll som mixin- klasser . De liknar gränssnitt , men till skillnad från dem inkluderar de implementeringar av standardmetoder.
Moose-objektsystemet har en inbyggd metamodell: den kan modifieras och utökas genom att skriva klasser och roller inom Moose själv. Moose används av många CPAN- tillägg, och det finns ett antal Moose-tilläggsmoduler [1] . Från och med version 5.8 är Model-View-Controller webbramverket Catalyst baserat på Moose-objektsystemet [3]
Exempel
Klassen Point(punkten) och dess underklass Point3D(3-dimensionell punkt) definieras nedan:
paket Point ;
använd Älg ;
använd karp ;
har 'x' => ( isa => 'Num' , är => 'rw' );
har 'y' => ( isa => 'Num' , är => 'rw' );
sub clear {
my $self = shift ;
$self -> x ( 0 );
$self -> y ( 0 );
}
sub set_to {
@_ == 3 eller croak "Dåligt antal argument" ;
mitt $jag = skift ;
min ( $x , $y ) = @_ ;
$self -> x ( $x );
$self -> y ( $y );
}
packagePoint3D ; _ använd Älg ; använd karp ;
utökar 'Point' ;
har 'z' => ( isa => 'Num' , är => 'rw' );
after 'clear' => sub {
my $self = shift ;
$self -> z ( 0 );
};
sub set_to {
@_ == 4 eller croak "Dåligt antal argument" ;
mitt $jag = skift ;
min ( $x , $y , $z ) = @_ ;
$self -> x ( $x );
$self -> y ( $y );
$self -> z ( $z );
}
Metoderna och Point3Dåsidosätts i klassen , den första av dem anropar inte den överordnade klassmetoden, den andra gör det.
set_to()clear()
Se även
Anteckningar
- ↑ 12 Dave Rolsky . Perl 5.16 och senare , LWN.net (21 mars 2012). Arkiverad från originalet den 16 september 2013. Hämtad 21 augusti 2013.
- ↑ moose.iinteractive.com - officiell älgwebbplats
- ↑ Diment and Trout, 2009 , Introduktion -> Catalyst and Perl, sid. xxvi.
Litteratur
- Tom Christiansen, Larry Wall, Brian Foy och Jon Orwant. Ch. 12.Föremål. -> Älgen i rummet // Programmering Perl: Oöverträffad kraft för textbearbetning och skript. - O'Reilly Media , 2012. - S. 453-455. — 1130 sid. - ISBN 0596004923 , 9780596004927.
- kromatisk. Objekt -> Älg // Modern Perl . - Onyx Neon Press, 2011, 7 december. - 290 sid. - ISBN 0977920178 , 978-0977920174.
- Kieren Diment och Matt S Trout med Eden Cardim, Jay Kuri och Jess Robinson. Kapitel 2 Katalysatorinstallation och bakgrundskunskap -> Katalysatorbakgrundskunskap -> Objektorienterad programmering med älg // The Definitive Guide to Catalyst. Skriva utökningsbara, skalbara och underhållbara Perl-baserade webbapplikationer. - Apress, 2009. - S. 28-44. — 362 sid. - ISBN 978-1-4302-2365-8 .
- kromatisk. Nybörjare Introduktion till objektorienterad programmering med Perl . O'Reily (13 november 2008). Hämtad 21 augusti 2013. Arkiverad från originalet 28 maj 2013. (obestämd)
- Henry Van Styn. Älg . Linux Journal (23 januari 2012). Hämtad 21 augusti 2013. Arkiverad från originalet 22 september 2013. (obestämd)
- Randal Schwartz. Älgen flyger (del 1) . Linux Magazine (19 september 2007). Hämtad 21 augusti 2013. Arkiverad från originalet 29 maj 2014. (obestämd) , Randal Schwartz. Älgen flyger (del 2) . Linux Magazine (23 september 2007). Hämtad 21 augusti 2013. Arkiverad från originalet 4 juli 2013. (obestämd)
- brian d foy. Komma igång med Moose // The Perl Review. - Juli 2010. - Utgåva. 5.3 . Arkiverad från originalet den 5 december 2013.
Länkar
Perl |
---|
människor |
- Larry Wall
- Randel Schwartz
- Damian Conway
- Allison Randel
- Audrey Tang
- Simon Cozens
- kromatisk
- Adam Kennedy
- brian d foy
- Mark Jason Dominus
|
---|
Saker |
|
---|
Ramar |
|
---|
|