Comment nommeriez-vous un paquet dont le seul but était d'étendre un autre module afin de lui appliquer des rôles? J'ai besoin d'un paquet qui s'étend (sous-classes) Template::Context avec Moose Donc je peux alors créer des rôles et des traits à appliquer, mais je ne sais pas comment nommer ce paquet (classe). Aucun conseil?Comment nommez-vous une classe/un module/un module comme
0
A
Répondre
3
Depuis son rôle-spécifique Moose, j'aurais Moose dans le nom. Template :: Contexte :: Moosified Ou Template :: Contexte :: WithAntlers. Mais avoir une sous-classe intermédiaire juste pour que vous puissiez coller des rôles dessus est bizarre. Vous pouvez ignorer cet intermédiaire et déclarer simplement les classes composées directement.
package Template::Context::ForBreakfast;
use Moose;
extends "Template::Context";
with "Bacon", "Eggs", "Toast";
Le nom de classe ne doit pas figurer dans la composition de rôle.
1
Je ne suis pas sûr que cela soit approuvé mais vous pouvez toujours essayer en appliquant directement le rôle.
package R;
use Moose::Role;
sub f { say 42 }
package main;
use URI;
R->meta->apply(Moose::Meta::Class->initialize('URI'));
URI->new->f
Accordé ce besoin d'sucrage up, n'a absolument aucune garantie à travailler long terme, et est probablement tout à fait non pris en charge. C'est cependant ainsi que fonctionne le MOP sans sucre.
Je n'ai pas vraiment l'intention de les utiliser en tant que/roles/(par exemple en utilisant 'with') Je prévois de les utiliser comme des traits et de les faire composer sur la classe beaucoup plus dynamiquement. – xenoterracide