您如何命名一个软件包,其唯一目的是扩展另一个模块,以便您可以应用角色?我需要一个扩展(子类)Template::Context的包Moose所以我可以创建角色和特征来应用它,但我不知道该命名这个包(类)的名称。有什么建议吗?
答案 0 :(得分:3)
由于Moose特有的角色化,我的名字中有Moose。模板::语境:: Moosified。或者Template :: Context :: WithAntlers。
但是有一个中间子类只是为了你可以把角色粘在它上面是很奇怪的。您可以跳过该中间人并直接声明组合类。
package Template::Context::ForBreakfast;
use Moose;
extends "Template::Context";
with "Bacon", "Eggs", "Toast";
班级名称不属于角色组成。
答案 1 :(得分:1)
我不确定这是否已获批准,但您始终尝试直接应用该角色。
package R;
use Moose::Role;
sub f { say 42 }
package main;
use URI;
R->meta->apply( Moose::Meta::Class->initialize( 'URI' ) );
URI->new->f
当然这需要一些加糖,绝对没有保证长期工作,并且可能完全不受支持。然而,这是MOP未经有效运作的方式。