J'ai fait un module « bundle » qui fait un tas de choses: les importations Moose
, les importations true
, namespace::autoclean
, fait immuable (prise de MooseX::AutoImmute
) la classe de l'appelant. La seule chose que je n'ai pas réussi à comprendre est comment inclure MooseX::Method::Signatures
.d'importation MooseX Méthode :: Signatures dans le champ de l'appelant
Voici ce que j'ai jusqu'à présent:
package My::OO;
use Moose::Exporter;
use Hook::AfterRuntime;
use Moose();
use true();
use namespace::autoclean();
my ($import, $unimport, $init_meta) = Moose::Exporter->build_import_methods(
also => ['Moose'],
);
sub import {
true->import();
my $caller = scalar caller;
after_runtime { $caller->meta->make_immutable };
namespace::autoclean->import(-cleanee => $caller);
goto &$import;
}
sub unimport {
goto &$unimport;
}
1;
L'idée est que dans mon code, je peux maintenant faire des choses comme ceci:
package My::Class; {
use My::OO;
extends 'My::Parent';
method foo() { ... }
}
mais maintenant je dois encore inclure un use MooseX::Method::Signatures;
supplémentaire. Comment puis-je l'inclure dans mon module OO?
+1 pour MooseX :: Déclare! Sérieusement Moose est cool, mais si l'on veut que Perl OO soit facile, il faut aller jusqu'au bout. Par exemple, je travaille sur un clone onopoly basé sur Perl, appelé ['Opoly'] (https://github.com/jberger/Opoly) et une partie de ma raison d'essayer était de faire un projet complet dans MooseX :: Declare et c'est génial –