我想从基类导出一个简单的函数,我在所有子类中使用它,而不必一直使用$self->myfunc(),只是一个简单的func()调用。
我试着用Moose:: exporters
中的例子来做这个但我不明白
as_is => [ 'sugar3', &Some::Random::thing ],
所做的,因为这个例子似乎不完整。糖在任何地方都没有定义,所以我不知道在哪里或如何使用它。现在我可以在子类中调用sugar3()了吗?糖是驼鹿的秘密食物吗?
然后是这个东西…字面上的
thing;
,这是导出的,但我不知道什么东西在做,因为没有它的例子。这是一个函数调用吗?
无论如何,更重要的是你如何导出函数,就像你通常用出口商做的那样,但是用Moose出口商代替,如果我的基类在它之后有3个级别的继承会发生什么,所有的子子类都可以访问这个导出的函数吗?
as_is => [ ... ]
:
这个函数名或子引用列表将按原样导出。您可以通过引用来标识子例程,这样可以方便地通过引用(&Some::Package::function
)直接重新导出其他模块的函数。
sugar3
为要导出的子节点名称。
是的,你现在可以在子类中调用sugar3
,如果那是你导出它的地方。也就是说,导出(除了常量之外的任何东西)到子类通常是很奇怪的。
是,thing;
是子呼叫。在no strict;
下,它也可以与'thing';
相同。
子类将不能访问子类,除非它被作为方法调用(例如$o->thing;
而不是thing;
)。但是导出方法是非常奇怪的。创建一个Moose::Role为类提供方法