무스 오브젝트로 멀티 메쏘드 디스패치가 필요합니다. 나는 Class::Multimethods::Pure으로 이것을하고있다. 나는 MooseX::MultiMethods 대신에 이것을 선택했습니다. 왜냐하면 테스트에 실패했기 때문에 내 시스템에 설치할 수없는 MooseX::Method::Signatures에 의존하기 때문입니다. 당신이 제안 할 수있는 대체 접근법이 있다면 나는 상관하지 않습니다. 확장하는 방법 :: Multimethods :: 순수한 무스 역할을 인식하려면?
유형 및 하위 유형 괜찮 다음 작품
: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);
그러나 선언 된 유형이 실제로 무스 역할입니다 지금 처리해야하는 시나리오는 다음과 같습니다 '
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))
documentation은 확장 할 수 있다고 말합니다. 여러 가지 방법으로 Perl 6-ish 역할을 추가 할 수 있습니다. 그러나 그것은 나를 위해 조금 개략적이며 더 자세한 예제를 찾고 있습니다. 아무도 이것을 시도 했습니까?