Moose: Porovnání verzí

Z Wikiverzity
Smazaný obsah Přidaný obsah
Kychot (diskuse | příspěvky)
Instalace
Kychot (diskuse | příspěvky)
01
Řádek 28: Řádek 28:
</source>
</source>
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).
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


<source lang='perl'>
<source lang='perl'>
package Kočka
</source>
</source>
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.


=== 01 ===
<source lang='perl'>

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:

<source lang='perl' line>
#! /usr/bin/perl

Modern::Perl;
use utf8;
binmode STDOUT, ':utf8';

package Kocka
{
use Moose;

sub mňau
{
my $self = shift;
say 'Mňau!';
}
}

my $Líza = Kocka->new();
my $Mňouk = Kocka->new();

$Líza->mňau();
$Mňouk->mňau();
</source>
</source>

*



<source lang='perl'>
<source lang='perl'>

Verze z 24. 10. 2012, 09:18

Moose je objektový systém, vytvořený jako knihovna v Perlu. V podstatě vytváří určitý způsob myšlení (školu), jak zacházet s objekty v Perlu (s objekty se zde jinak dá zacházet celkem volně).

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.

01

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:

#! /usr/bin/perl

Modern::Perl;
use utf8;
binmode STDOUT, ':utf8';

package Kocka
{
    use Moose;

    sub mňau
    {
        my $self = shift;
        say 'Mňau!';
    }
}

my $Líza = Kocka->new();
my $Mňouk = Kocka->new();

$Líza->mňau();
$Mňouk->mňau();