2010-08-04 16 views

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.

+0

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

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.