我是一個新的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);
然而駝鹿抱怨失敗:
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?
感謝
是標準/推薦使用短名稱進口的方式嗎?我想確定的是,我最終使用的方法沒有任何與此相關的陷阱,只是用作指定整個路徑的替代品。 – user2103008