如何使用Moose :: Exporter导出函数?

时间:2011-10-14 20:16:32

标签: perl oop moose exporter

我想从我在子类中使用的基类导出一个简单的函数,而不必一直使用$ self-> myfunc(),只需要一个简单的func()调用。

我尝试使用Moose::Exporter

中的示例执行此操作

但我不明白是什么

as_is     => [ 'sugar3', \&Some::Random::thing ],

正在做,因为这个例子似乎不完整。 sugar3没有在任何地方定义,所以我不知道在哪里或如何使用它。我现在可以在子类中调用sugar3()吗? Sugar3()是一些秘密的Moose吗?

然后是这件事......字面意思

thing;

已导出,但由于没有它的例子,我不知道正在做什么。这是函数调用吗?

无论如何,更多的是你如何导出函数,就像你通常使用Exporter一样,但是使用Moose Exporter,,如果我的基类有3级继承后会发生什么,将会所有子子类都可以访问这个导出的函数吗?

1 个答案:

答案 0 :(得分:3)

as_is => [ ... ]

将按原样导出此函数名称或子引用列表。您可以通过引用识别子例程,这可以通过引用(\&Some::Package::function)直接重新导出其他模块的函数。

sugar3是要导出的子名称。

是的,您现在可以在子类中调用sugar3,如果您将其导出到的位置。也就是说,将(除了常量之外的任何东西)导出到子类通常很奇怪。

是的,thing;是一个子通话。在no strict;下,它也可以与'thing';相同。

除非将子类称为方法(例如$o->thing;而不是thing;),否则子类将无法访问该子类。但是,导出方法非常奇怪。创建一个Moose :: Role来为类提供方法。