我习惯使用Java工作,所以也许这个问题是面向Java的Perl问题......无论如何,我使用Person
创建了一个Moose
包。
现在,我想添加一些“静态”子程序,即它们不引用特定的Person
,但仍与Person
包密切相关。例如,sub sort_persons
获取Person
个对象的数组。
在Java中,我只是声明static
这样的函数。但在Perl中......这样做的常见方法是什么?
p.s。我认为我所指的Perlish术语是“类方法”。
答案 0 :(得分:18)
在Perl中没有静态方法。适用于整个类的方法通常称为类方法。这些仅与实例方法的区别在于它们的第一个参数的类型(它是包名,而不是对象)。构造函数方法(如大多数Perl类中的new()
)是类方法的常见示例。
如果您希望将某个特定方法作为类方法 调用,请执行以下操作:
sub class_method {
my ($class, @args) = @_;
die "class method invoked on object" if ref $class;
# your code
}