Moose: Porovnání verzí
→Externí odkazy: Henry Van Styn |
m →Externí odkazy: form |
||
Řádek 15: | Řádek 15: | ||
== Externí odkazy == |
== Externí odkazy == |
||
* Linuxsoft.cz – Jiří Václavík (2005–2011): 149dílný seriál [http://www.linuxsoft.cz/article_list.php?id_kategory=210 Perl]: |
* [http://www.linuxsoft.cz Linuxsoft.cz] – Jiří Václavík (2005–2011): 149dílný seriál [http://www.linuxsoft.cz/article_list.php?id_kategory=210 Perl]: |
||
** [http://www.linuxsoft.cz/article.php?id_article=1683 Perl (107) - Moose - moderní objektový systém] |
** [http://www.linuxsoft.cz/article.php?id_article=1683 Perl (107) - Moose - moderní objektový systém] |
||
** [http://www.linuxsoft.cz/article.php?id_article=1687 Perl (108) - Moose - základní vlastnosti] |
** [http://www.linuxsoft.cz/article.php?id_article=1687 Perl (108) - Moose - základní vlastnosti] |
||
** [http://www.linuxsoft.cz/article.php?id_article=1688 Perl (109) - Moose - role] |
** [http://www.linuxsoft.cz/article.php?id_article=1688 Perl (109) - Moose - role] |
||
** [http://www.linuxsoft.cz/article.php?id_article=1701 Perl (110) - Moose - meta API] |
** [http://www.linuxsoft.cz/article.php?id_article=1701 Perl (110) - Moose - meta API] |
||
* [http://www.linuxjournal.com linuxjournal.com] – Henry Van Styn (2012-01-23): [http://www.linuxjournal.com/content/moose '''Moose'''] |
|||
== Instalace == |
== Instalace == |
Verze z 30. 10. 2012, 15:31
Moose je objektový systém, vytvořený jako knihovna v Perlu na knihovnou Class::MOP. V podstatě vytváří určitý způsob myšlení (školu, anticipující Perl6), jak zacházet s objekty v Perlu (s objekty se zde jinak dá zacházet celkem volně).
Info
Související články
- KiokuDB – persistentní objekty založené na Moose jsou transparentně ukládány pomocí různých databázových backendů
Externí odkazy
- Linuxsoft.cz – Jiří Václavík (2005–2011): 149dílný seriál Perl:
- linuxjournal.com – Henry Van Styn (2012-01-23): Moose
Instalace
Ubuntu
Při výběru balíku libmoose-perl budou nainstalovány i následující balíky:
- libb-hooks-endofscope-perl (verze 0.08-1) bude nainstalován
- libclass-load-xs-perl (verze 0.03-1) bude nainstalován
- libdevel-globaldestruction-perl (verze 0.04-2) bude nainstalován
- libdevel-partialdump-perl (verze 0.15-1) bude nainstalován
- libeval-closure-perl (verze 0.06-1) bude nainstalován
- libmoose-perl (verze 2.0401-1) bude nainstalován
- libnamespace-clean-perl (verze 0.22-1) bude nainstalován
- libsub-exporter-perl (verze 0.982-1) bude nainstalován
- libsub-identify-perl (verze 0.04-1build2) bude nainstalován
- libtask-weaken-perl (verze 1.03-1) bude nainstalován
- libvariable-magic-perl (verze 0.47-1build1) bude nainstalován
Tutoriál
Sytému Moose je věnována kapitola Objects v knize Modern Perl#07. Objekty. Touto kapitolou je inspirován tento tutoriál. Poznamenejme, že direktivami
use utf8;
binmode STDOUT, ':utf8';
můžeme (pro legraci) používat i české názvy proměnných i s diakritikou (pro vážné programování bych to ale asi nedoporučoval).
Z nějakých důvodů to ale s diakritikou nefunguje v případě, že tak nazveme třídu; příkaz
package Kočka
vyvolá chybu:
Kočka is not a module name at /usr/lib/perl5/Class/MOP/Package.pm line 207. BEGIN failed--compilation aborted at ./07.01Kocka.pl line 9.
Nejspíš se jedná o bug – viz Pragmas > utf8 až na konci: Bugs.
01. Konstruktory – stvoření koček
Tak tedy, vytvoříme si třídu koček, které umí mňoukat, a dvě její instance, Lízu a Mňauka, které pak z mňoukání vyzkoušíme. Ale ještě k terminologii, která je v objektovém programování celkem obvyklá:
- Třída je v Perlu v podstatě to samé, co balík. Má to logiku, zpravidla definice tříd jsou i v jiném (např. knihovním) souboru *.pm, ale klidně mohou být i v tom samém souboru. Hlavně to ale znamená, že všechny proměnné tam jsou plně kvalifikované, tj. mají vlastní jmenný prostor, daný názvem třídy.
- Konkrétní instance se vytvářejí pomocí konstruktoru new
- metoda je funkce, asociovaná s třídou. Když se volá, má vždy nějaký invokant, se kterým metoda pracuje:
- když vytváříme nový objekt, je tím invokantem jmé