你如何使用Moose的子类MooseX :: Declare?

时间:2011-03-24 14:35:25

标签: perl moose

假设您已完成扩展食谱34之类的操作。所以你有一些类似MyApp :: UseMyBase的类,你可以用来代替'使用Moose;'在你正常的使用Moose的代码中。但是在使用MooseX :: Declare?

时如何使用MyApp :: UseMyBase

我可以看到MooseX :: Declare :: Syntax :: MooseSetup :: import_symbols_from()可能很有希望,但不知道如何更改其返回值并使用MooseX :: Declare并从MyApp :: UseMyBase导入而不是穆斯。

1 个答案:

答案 0 :(得分:3)

如果这是你想要的,你必须继承MooseX::Declare::Syntax::Keyword::Class,也可能是MooseX::Declare::Syntax::Keyword::Role,并在那里自定义import_symbols_from

然后,您将MooseX::Declare扩展为实际提供已修改的关键字。为此,您需要自定义keywords方法。您可以使用自定义关键字的实例替换它返回的ClassKeyword和RoleKeyword实例,或者只是根据您是否要

将其设置为不同的标识符下的新关键字。
use MyMooseX::Declare;
class Foo { ... } # the modified class keyword

use MyMooseX::Declare;
class   Foo { ... } # the default class keyword
myclass Bar { ... } # the modified class keyword

CatalystX::Declare包含现有技术,但它也比你要求的要复杂得多。我不知道一个更简单的例子,但是我希望在你想要与世界其他地方分享你的解决方案时加入改进的文档