0

您如何命名一个唯一目的是扩展另一个模块以便您可以对其应用角色的包?我需要一个使用Moose扩展(子类)Template::Context的包,因此我可以创建角色和特征以应用于它,但我不知道如何命名这个包(类)。有什么建议吗?

4

2 回答 2

3

由于其特定于 Moose 的角色化,我会在名称中使用 Moose。模板::上下文::Moosified。或 Template::Context::WithAntlers。

但是有一个中间子类只是为了让你可以将角色粘贴到它上面是很奇怪的。你可以跳过那个中间人,直接声明组合类。

package Template::Context::ForBreakfast;

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

类名应该不属于角色组合。

于 2010-08-04T07:15:01.647 回答
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 有效工作的方式。

于 2010-08-10T04:54:33.680 回答