我应该如何在Perl中定义“静态”子程序?

时间:2010-10-02 12:35:17

标签: function perl oop packages static-methods

我习惯使用Java工作,所以也许这个问题是面向Java的Perl问题......无论如何,我使用Person创建了一个Moose包。

现在,我想添加一些“静态”子程序,即它们不引用特定的Person,但仍与Person包密切相关。例如,sub sort_persons获取Person个对象的数组。

在Java中,我只是声明static这样的函数。但在Perl中......这样做的常见方法是什么?

p.s。我认为我所指的Perlish术语是“类方法”

1 个答案:

答案 0 :(得分:18)

在Perl中没有静态方法。适用于整个类的方法通常称为类方法。这些仅与实例方法的区别在于它们的第一个参数的类型(它是包名,而不是对象)。构造函数方法(如大多数Perl类中的new())是类方法的常见示例。

如果您希望将某个特定方法作为类方法 调用,请执行以下操作:

sub class_method {
    my ($class, @args) = @_;
    die "class method invoked on object" if ref $class;
    # your code        
}