【发布时间】:2011-10-14 20:16:31
【问题描述】:
我想从一个我在所有子类中使用的基类中导出一个简单的函数,而不必一直使用 $self->myfunc(),只需一个简单的 func() 调用。
我尝试使用Moose::Exporter 中的示例进行此操作
但我不明白是什么
as_is => [ 'sugar3', \&Some::Random::thing ],
正在做,因为示例似乎不完整。 Sugar3 没有在任何地方定义,所以我不知道在哪里或如何使用它。我现在可以在子类中调用 sugar3() 吗? Sugar3() 是 Moose 的秘密吗?
然后就是这个东西......字面意思
thing;
这是导出的,但我不知道这是在做什么,因为没有例子。这是函数调用吗?
无论如何,更重要的是您如何像通常使用 Exporter 一样导出函数,但使用 Moose Exporter, 如果我的基类在它之后有 3 级继承会发生什么,将所有子子类都可以访问这个导出的函数吗?
【问题讨论】:
-
这并没有多大帮助,但考虑尝试像这样混合 OO 继承和包语法只会让我大吃一惊。你确定没有更好的方法来做你想做的事吗?此外,我相当肯定(尽管我也很容易出错)使用父级“Whatever”最终不会将函数导入本地包,所以它听起来与 Exporter 的方式没有什么不同工作。
-
我不想混搭任何东西,我只是经常使用函数调用来调试打印和测试东西,但当我完成时我会清理它=]。无论如何,我仍然想了解这是如何工作的。 +1 感谢您分享您对此的看法
-
$self->myfunc()和myfunc()是两个非常不同的东西,您不应该编写一个方法然后尝试将它作为子导出。导出的函数将无法访问对象——也就是说,它不是面向对象的。 -
+1 好点。看来我不应该在 Moose 中尝试这样做,但是如果我们不导出任何东西,为什么 Moose 会提供导出器呢?