Мне нужна отправка мультиметода с объектами Moose.Я делаю это с Class :: Multimethods :: Pure .Я выбрал это вместо MooseX :: MultiMethods , потому что это зависит от MooseX :: Method :: Signatures , который не может быть установлен в моей системе, потому что он не проходит свои тесты.Я не возражаю, если у вас есть альтернативный подход к предложению.
С типами и подтипами хорошо работает следующее:
package Foo::Type;
use Moose;
package Foo::SubType;
use Moose;
extends 'Foo::Type';
package main;
use Class::Multimethods::Pure;
multi hello => ('Foo::Type') => sub {
my ( $foo ) = @_;
print $foo;
};
hello( Foo::SubType->new );
Но сценарий, который мне сейчас нужно обработать, - это где объявленныйтип на самом деле является Moose Role:
package Foo::Role;
use Moose::Role;
package Foo::Type;
use Moose;
with 'Foo::Role';
package main;
use Class::Multimethods::Pure;
multi hello => ('Foo') => sub {
my ( $foo ) = @_;
print $foo;
};
hello( Foo::Type->new );
Но эту роль нельзя распознать:
No method found for args (Foo::Type=HASH(0x22ac854))
Документация говорит, что она может быть расширена различными способами., включая добавление Perl 6-ти ролей.Но это немного отрывочно для меня, и я ищу более подробный пример.Кто-нибудь пробовал это?