Elg (Perl)
Moose er en udvidelse af det objektorienterede undersystem til Perl 5. Tilføjer moderne OOP-faciliteter til Perl, Moose blev inspireret af CLOS , Perl 6 og mange andre sprog [1] såsom Smalltalk , Java , BETA , OCaml , Ruby og andre [2] .
Funktioner
Objektorienteret programmering i Moose er ligesom Perl 6 baseret, udover klasser og objekter, på mekanismen for roller , et af alternativerne til multipel nedarvning (som dog også understøttes).
Attributter ( klasseegenskaber ) af klasser understøtter delegering og doven initialisering .
Roller er egenskabsbaserede og udfører den samme rolle som mixin- klasser . De ligner grænseflader , men i modsætning til dem inkluderer de standardmetodeimplementeringer.
Moose-objektsystemet opretholder en resident metamodel: den kan ændres og udvides ved at skrive klasser og roller i Moose selv. Moose bruges af mange CPAN- udvidelser, og der er en række Moose-udvidelsesmoduler [1] . Fra version 5.8 er Model-View-Controller -webframework Catalyst baseret på Moose-objektsystemet [3]
Eksempel
Klassen Point(punktet) og dens underklasse Point3D(3-dimensionelt punkt) er defineret nedenfor:
pakke Point ;
brug Moose ;
brug Karper ;
har 'x' => ( isa => 'Num' , er => 'rw' );
har 'y' => ( isa => 'Num' , er => 'rw' );
sub clear {
my $self = shift ;
$selv -> x ( 0 );
$selv -> y ( 0 );
}
sub set_to {
@_ == 3 eller kvække "Dårligt antal argumenter" ;
mit $selv = skift ;
min ( $x , $y ) = @_ ;
$selv -> x ( $x );
$selv -> y ( $y );
}
packagePoint3D ; _ brug Moose ; brug Karper ;
udvider 'Punkt' ;
har 'z' => ( isa => 'Num' , er => 'rw' );
after 'clear' => sub {
my $self = shift ;
$selv -> z ( 0 );
};
sub set_to {
@_ == 4 eller kvække "Dårligt antal argumenter" ;
mit $selv = skift ;
min ( $x , $y , $z ) = @_ ;
$selv -> x ( $x );
$selv -> y ( $y );
$selv -> z ( $z );
}
Metoderne og Point3Der tilsidesat i klassen , den første af dem kalder ikke den overordnede klassemetode, den anden gør det.
set_to()clear()
Se også
Noter
- ↑ 12 Dave Rolsky . Perl 5.16 og senere , LWN.net (21. marts 2012). Arkiveret fra originalen den 16. september 2013. Hentet 21. august 2013.
- ↑ moose.iinteractive.com - officiel Moose hjemmeside
- ↑ Diment and Trout, 2009 , Introduktion -> Catalyst and Perl, s. xxvi.
Litteratur
- Tom Christiansen, Larry Wall, Brian Foy og Jon Orwant. Ch. 12. Genstande. -> Elgen i rummet // Programmering Perl: Uovertruffen kraft til tekstbehandling og scripting. - O'Reilly Media , 2012. - S. 453-455. — 1130 s. - ISBN 0596004923 , 9780596004927.
- kromatisk. Objekter -> Elge // Moderne Perl . - Onyx Neon Press, 2011, 7. december. - 290 s. - ISBN 0977920178 , 978-0977920174.
- Kieren Diment og Matt S Trout med Eden Cardim, Jay Kuri og Jess Robinson. Kap.2 Katalysatoropsætning og baggrundsviden -> Katalysatorbaggrundsviden -> Objektorienteret programmering med Moose // The Definitive Guide to Catalyst. Skrivning af udvidelige, skalerbare og vedligeholdelige Perl-baserede webapplikationer. - Apress, 2009. - S. 28-44. — 362 s. - ISBN 978-1-4302-2365-8 .
- kromatisk. Begyndere introduktion til objektorienteret programmering med Perl . O'Reily (13. november 2008). Hentet 21. august 2013. Arkiveret fra originalen 28. maj 2013. (ubestemt)
- Henry Van Styn. Elg . Linux Journal (23. januar 2012). Hentet 21. august 2013. Arkiveret fra originalen 22. september 2013. (ubestemt)
- Randal Schwartz. Elgen flyver (del 1) . Linux Magazine (19. september 2007). Hentet 21. august 2013. Arkiveret fra originalen 29. maj 2014. (ubestemt) , Randal Schwartz. Elgen flyver (del 2) . Linux Magazine (23. september 2007). Hentet 21. august 2013. Arkiveret fra originalen 4. juli 2013. (ubestemt)
- brian d foy. Kom godt i gang med Moose // The Perl Review. - Juli 2010. - Udgave. 5.3 . Arkiveret fra originalen den 5. december 2013.
Links
Perl |
---|
Mennesker |
- Larry Wall
- Randel Schwartz
- Damian Conway
- Allison Randel
- Audrey Tang
- Simon Cozens
- kromatisk
- Adam Kennedy
- brian d foy
- Mark Jason Dominus
|
---|
Ting |
|
---|
Rammer |
|
---|
|