开发者

How do you name a class/package/module like

How would you name a package who's sole purpose was to extend another module so you could apply roles to it? I need a package that exten开发者_如何学运维ds (sub classes) Template::Context with Moose So I can then create roles and traits to apply to it, but I don't know what to name this package (class). Any advice?


Since its Moose-specific role-ification, I'd have Moose in the name. Template::Context::Moosified. Or Template::Context::WithAntlers.

But having an intermediate subclass just so you can stick roles onto it is weird. You can skip that middleman and simply declare composed classes directly.

package Template::Context::ForBreakfast;

use Moose;
extends "Template::Context";
with "Bacon", "Eggs", "Toast";

The class name should fall out of the role composition.


I'm not sure this is approved but you can always try applying the Role directly.

package R; 
use Moose::Role; 
sub f { say 42 } 

package main; 
use URI;
R->meta->apply( Moose::Meta::Class->initialize( 'URI' ) ); 
URI->new->f

Granted this needs some sugaring up, has absolutely no guarantees to work long term, and is probably totally unsupported. This is however how the MOP unsugared effectively works.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜