Tout d'abord, je ne suis pas sûr de la quantité d'informations à inclure, car j'ai vraiment du mal à déterminer l'origine de ce problème.Impossible de définir les attributs de la classe dans le rôle
J'ai un rôle Moose avec un sous-programme qui (avec quelques autres) essaie de définir les attributs d'une classe comme ceci:
$genre = Movie::Genre->new({
genreName => 'Drama',
genreID => '1'
});
Le problème est, il ne fonctionne pas. La décharge de $genre
immédiatement après, indique qu'il est encore vide:
$genre: bless({}, 'Movie::Genre')
étrange encore, quand j'exécuter la même ligne EXACT dans mon fichier de test, il fonctionne comme prévu avec cette décharge:
$genre: bless({
genreID => '1',
genreName => 'Drama'
}, 'Movie::Genre')
J'ai du mal à trouver ce qui différencie ces deux lignes de code, ce qui fait que l'une fonctionne et l'autre échoue.
Des idées sur les conditions qui pourraient entraîner l'échec du premier exemple et permettre à la seconde de réussir? Je serais heureux de fournir plus de contexte si nécessaire. Merci!
Merci - vous avez eu raison. J'ai eu une longue chaîne de rôles et après un examen de qui appelle qui d'abord et certains remaniement, le problème a été résolu. – Ryan
La méthode recommandée pour composer plusieurs rôles (une longue chaîne) est avec un seul appel 'avec qw (Role1 Role2 Role3);'. De cette façon, la composition n'est pas ordonnée ne devrait pas vous affecter. Cependant, en réalité, cela peut ne pas fonctionner à chaque fois et ainsi (en raison d'une bizarrerie de l'implémentation) plusieurs appels à 'with()' peuvent créer une composition ordonnée. – perigrin