3

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

我试着用Moose::Exporter的例子来做这个

但我不明白什么

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

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

然后是这件事......从字面上看

thing;

那是出口的,但我不知道在做什么,因为没有例子。这是函数调用吗?

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

4

1 回答 1

3

as_is => [ ... ]

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

sugar3是要导出的子名称。

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

是的,thing;是子调用。下no strict;,也可能与 相同'thing';

The sub classes won't have access to the sub unless it's called as a method (e.g. $o->thing; instead of thing;). It's extremely weird to export methods, though. Create a Moose::Role to give methods to a class.

于 2011-10-14T21:11:39.880 回答