我想从我在子类中使用的基类导出一个简单的函数,而不必一直使用$ self-> myfunc(),只需要一个简单的func()调用。
我尝试使用Moose::Exporter
中的示例执行此操作但我不明白是什么
as_is => [ 'sugar3', \&Some::Random::thing ],
正在做,因为这个例子似乎不完整。 sugar3没有在任何地方定义,所以我不知道在哪里或如何使用它。我现在可以在子类中调用sugar3()吗? Sugar3()是一些秘密的Moose吗?
然后是这件事......字面意思
thing;
已导出,但由于没有它的例子,我不知道正在做什么。这是函数调用吗?
无论如何,更多的是你如何导出函数,就像你通常使用Exporter一样,但是使用Moose Exporter,,如果我的基类有3级继承后会发生什么,将会所有子子类都可以访问这个导出的函数吗?
答案 0 :(得分:3)
as_is => [ ... ]
:
将按原样导出此函数名称或子引用列表。您可以通过引用识别子例程,这可以通过引用(\&Some::Package::function
)直接重新导出其他模块的函数。
sugar3
是要导出的子名称。
是的,您现在可以在子类中调用sugar3
,如果您将其导出到的位置。也就是说,将(除了常量之外的任何东西)导出到子类通常很奇怪。
是的,thing;
是一个子通话。在no strict;
下,它也可以与'thing';
相同。
除非将子类称为方法(例如$o->thing;
而不是thing;
),否则子类将无法访问该子类。但是,导出方法非常奇怪。创建一个Moose :: Role来为类提供方法。