私はPerlを少し新しくしました。 、クラスを宣言するときに、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 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);
私は次のようにクラスを使用/定義しようとしていますエイリアスを使用しないように切り替えると、もちろん動作します(もちろんそうです):
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);
私の質問はなぜエイリアス使用ビットがムースで動作しないのですか?
おかげ
は、インポートに短い名前を使用するための標準的な/推奨の方法ですか?私が確かめたいのは、私が使っているアプローチには、それに関連する問題がなく、パス全体を指定する代わりに使われるときだけであるということです。 – user2103008