Je suis un peu nouveau pour Perl. Je suis en train de définir/utiliser une classe de la manière suivante:utilisant aliased avec Moose ne semble pas fonctionner lors de la déclaration des classes
package A::B::C;
use strict;
use warnings;
use Moose;
use aliased 'A::B::D';
has 'attribute' => (isa => 'ArrayRef[D]', is => 'ro', required => 1);
Lors de la création d'un objet:
use aliased 'A::B::C';
use aliased 'A::B::D';
my $aref = [D->new()];
C->new($aref);
Cependant cela ne fonctionne pas comme Moose se plaint:
Attribute (attribute) does not pass the type constraint because: Validation failed for 'ArrayRef[D]' with value ARRAY(0x7f2b658b51c0)
Mais, si je passe à ne pas utiliser d'alias, cela fonctionne (comme il se doit bien sûr):
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);
Ma question est pourquoi le bit alias d'utilisation ne fonctionne pas avec Moose?
Merci
est-ce la façon standard/recommandée d'utiliser des noms abrégés pour les importations? Ce que je veux m'assurer, c'est que l'approche que je finis par utiliser ne possède pas de telles pièges et fonctionne seulement lorsqu'elle est utilisée comme remplacement pour spécifier le chemin entier. – user2103008