내가 원하는 것을하기에 더 좋은 패턴이 무엇인지 지금 알고 싶습니다. 문제를 최소한으로 줄이기 위해 단계별로 설명하겠습니다.무스 역할 유도
내가 좋아하는 인터페이스 역할이 있습니다
{
package Likeable::OnSelf;
use Moose::Role;
with 'Likeable';
has 'likers' => (is => 'rw', isa => 'ArrayRef');
sub do_like { }
}
{
package Likeable::OnParent;
use Moose::Role;
with 'Likeable';
requires 'parent';
sub likers { shift->parent->likers(@_) }
sub do_like { shift->parent->do_like(@_) }
}
및이 후
{
package Likeable;
use Moose::Role;
requires 'likers';
requires 'do_like';
}
을, 나는 (그들은 모두 구현이 경우) 이전 인터페이스를 반 구현하는 것이이 추상 역할이 필요 나중에 컴파일 할 때이 코드가 필요합니다.
{
package OBJ::OnSelf;
use Moose;
with 'Likeable::OnSelf';
}
{
package OBJ::OnParent;
use Moose;
with 'Likeable::OnParent';
has 'parent' => (is => 'rw', isa => 'Obj');
}
foreach my $obj (OBJ::OnSelf->new, OBJ::OnParent->new(parent => OBJ::OnSelf->new)) {
if ($obj->does('Likeable')) {
$obj->do_like
}
}
문제는 내가하려는 것입니다. 무스 :: 역할에 대한 파생,하지만 문제를 올바르게 해결하는 방법은 없습니다.
의견이 있으십니까?
특히 정확한 텍스트가 있으면 오류 메시지를 제공해야합니다. 이것을 실행하려 할 때 오류 메시지가 있었어야합니다. – zostay