在 Perl/Moose 中,如何在父类中创建可以从子类访问的静态变量?
我想在基类中定义一个所有子类都可以读取和写入的“注册表”哈希,如何使用 Moose/Perl 实现此目的?
I want to define a "registry" hash in the base class that all subclasses can read and write to, how do I accomplish this with Moose/Perl?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
发布评论
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
这是一个简单的 Perl OO 风格的实现。
您有两个类:带有全局变量
$REGISTRY
的BaseClass
和继承自BaseClass
的DerivedClass
。$REGISTRY
可通过registry()
方法从任何类实例读取和写入。如果运行这个程序,您会得到:
如果您更喜欢全 Moose 解决方案,您应该尝试这个:
它产生与 OO Perl 程序相同的结果。
请注意
_REGISTRY
属性是如何定义的。 Moose 不喜欢将 refs 作为默认值:default => {}
是禁止的,您必须将任何引用作为返回值包装在匿名子例程中。Here is an implementation with plain Perl OO-style.
You have two classes,
BaseClass
with global variable$REGISTRY
, andDerivedClass
which inherits fromBaseClass
.$REGISTRY
is readable and writable from any class instance viaregistry()
method.If you run this program you get:
If you prefer an all-Moose solution you should try this one:
It yields the same result of the OO Perl program.
Note how the
_REGISTRY
attribute is defined. Moose doesn't like refs as default values:default => {}
is forbidden, you have to wrap any reference as a return value in an anonymous subroutine.