Moose是否有办法获取类方法属性。我从之前的问题中了解到,像Sub :: Talisman这样的独立模块可以获得模块属性。
如果我运行下面的代码,我会收到错误“无效的CODE属性:Public at ...”
#============================
package BaseClass;
use Moose;
#============================
package SubClass;
use Moose;
extends qw(BaseClass);
sub greet : Public {
my $self = shift;
printf("Hello world.");
}
#============================
package main;
my $object = SubClass->new();
# I need to get the Public attribute of the sub greet in the SubClass package.
# if the sub has a Public attribute, call it, otherwise, die.
# does Moose have some methods to get the attributes, I know some other modules like
# Sub::Talisman can get the sub's attributes.
$object->greet();
#============================
我需要在SubClass包中获取sub greet的Public属性。 如果sub有一个Public属性,我会做一些事情,否则,别的什么。
Moose是否有一些获取属性的方法,我知道其他一些模块 Sub :: Talisman可以获得子属性。
答案 0 :(得分:2)
有MooseX::MethodAttributes将属性自省内容集成到Moose元对象协议中。
但是,您获得的特定错误将无法解决。要消除该错误,您需要定义一个名为:Public
的属性,以便Perl知道该属性存在。 Sub::Talisman和Attribute::Handlers是可用于定义属性的模块。