2010-08-21 6 views
4

Je voudrais configurer un rôle Moose composé d'autres rôles plus petits. Par exemple, si j'ai WithAddress et WithPhone je voudrais un seul WithContacts qui fournit à la fois WithAddress et WithPhone et toutes les méthodes de contact que j'ajouterai à l'avenir. Comment est-ce que je peux faire ceci avec Moose?Un rôle Moose des rôles

Répondre

9
package WithContacts; 

use Moose::Role; 
with qw(WithAddress WithPhone); 

# anything else your role should do 

no Moose::Role; 
1; 
+0

* Ker-DUH! * Est-ce que 'no Moose :: Role' va après que toutes les méthodes ont été définies? – Schwern

+1

@Schwern, normalement vous mettez «no Moose» ou «no Moose :: Role» immédiatement avant la fin du fichier. Je pense que vous pouvez le mettre n'importe où après que vous avez fini avec 'with 'et' has' et 'requires', etc., mais la fin du fichier est la plus simple. – cjm

+3

Ce n'est pas vraiment nécessaire du tout; il ne fait qu'importer les différents types de sucre comme 'a', 'avec', etc. 'use namespace :: autoclean; 'est sans doute meilleur (une meilleure pratique sur ce point n'est pas encore vraiment comprise). – Ether

0

Le nouveau hotness est «l'utilisation namepace :: autoclean,» au lieu de «non Moose;» et «non Moose :: Rôle;»

Si vous vouliez entendre plus CJS: -

+0

oh, regarde. Mme Ether a déjà eu ça. – cjac

Questions connexes