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

标签 perl oop moose exporter

我想从我在所有子类中使用的基类导出一个简单的函数,而不必一直使用 $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/

相关文章:

perl - 处理 YAML 中的尾随冒号

perl - 当 Starman 收到 HUP 时,ZMQ 套接字会阻塞

c# - 将父类(super class)传递给 C# 函数(带有 Java 序曲)

perl - 使用 MooseX::Declare 关闭内联构造函数

Perl:使用基于索引的方法循环输入行

regex - "$^N"和 "$+"有什么区别?

Java 使用对象和构造函数

c# - 模型演化架构设计查询

perl - 需要帮助安装 MooseX::Declare

perl - 驼鹿 "builder"与 "default"