Я сделал модуль «пучок», который делает кучу вещей: импорт Moose
, импорт true
, namespace::autoclean
, делает класс абонента неизменяемым (взято из MooseX::AutoImmute
). Единственное, что мне не удалось выяснить, это включить MooseX::Method::Signatures
.Импорт MooseX :: Method :: Подписи в область видимости вызывающего
Вот что у меня до сих пор:
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;
Идея заключается в том, что в моем коде, я могу сделать что-то вроде этого:
package My::Class; {
use My::OO;
extends 'My::Parent';
method foo() { ... }
}
но сейчас я до сих пор включают дополнительные use MooseX::Method::Signatures;
. Как включить это в мой модуль OO?
+1 для MooseX :: Объявить! Серьезно Лось классный, но если кто-то сделает Perl OO легким, возьмите его полностью. Например, я работаю над клоном onopoly, основанным на Perl, под названием ['Opoly'] (https://github.com/jberger/Opoly), и часть моей причины пыталась сделать полный проект в MooseX :: Declare , и –