【发布时间】:2017-07-11 13:52:15
【问题描述】:
我对 Perl 有点陌生。我正在尝试以下列方式定义/使用一个类:
package A::B::C;
use strict;
use warnings;
use Moose;
use aliased 'A::B::D';
has 'attribute' => (isa => 'ArrayRef[D]', is => 'ro', required => 1);
创建对象时:
use aliased 'A::B::C';
use aliased 'A::B::D';
my $aref = [D->new()];
C->new($aref);
然而,正如 Moose 抱怨的那样,这失败了:
Attribute (attribute) does not pass the type constraint because: Validation failed for 'ArrayRef[D]' with value ARRAY(0x7f2b658b51c0)
但是,如果我切换到不使用别名,它会起作用(当然应该):
package A::B::C;
use strict;
use warnings;
use Moose;
use A::B::D;
has 'attribute' => (isa => 'ArrayRef[A::B::D]', is => 'ro', required => 1);
我的问题是为什么使用别名位不适用于 Moose?
谢谢
【问题讨论】:
标签: perl perl-module moose