我想从我在所有子类中使用的基类导出一个简单的函数,而不必一直使用 $self->myfunc(),只需一个简单的 func() 调用。
我试着用 Moose::Exporter 中的例子来做这个
但是我没看懂
as_is => [ 'sugar3', \&Some::Random::thing ],
正在做,因为这个例子似乎不完整。 sugar3 没有在任何地方定义,所以我不知道在哪里或如何使用它。我现在可以在子类中调用 sugar3() 吗? sugar3() 是 Moose 的 secret 吗?
然后是这个东西......字面意思
thing;
那是导出的,但我不知道它在做什么,因为没有它的例子。这是函数调用吗?
无论如何,更重要的是,您如何像通常使用 Exporter 那样导出函数,但使用 Moose Exporter 来代替,如果我的基类在它之后有 3 个继承级别,会发生什么情况?所有的子子类都可以访问这个导出函数?
最佳答案
as_is => [ ... ]
:
This list of function names or sub references will be exported as-is. You can identify a subroutine by reference, which is handy to re-export some other module's functions directly by reference (\&Some::Package::function
).
sugar3
是要导出的子名称。
是的,您现在可以在子类中调用 sugar3
,如果您将它导出到那里的话。也就是说,将(常量除外)导出到子类通常很奇怪。
是的,thing;
是一个子调用。在no strict;
下,也可以和'thing';
一样。
子类将无法访问 sub,除非它作为方法调用(例如 $o->thing;
而不是 thing;
)。但是,导出方法非常奇怪。创建一个 Moose::Role 以向类提供方法。
关于perl - 如何使用 Moose::Exporter 导出函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7773099/