Dav*_*d B 17 oop perl static-methods packages function
我以前在Java工作,所以也许这个问题是面向Java的Perl问题......无论如何,我已经创建了一个Person
包Moose
.
现在,我想添加一些"静态"的子程序,也就是说,它们不是指特定的Person
,但仍然与Person
包密切相关.例如,sub sort_persons
获取一个Person
对象数组.
在Java中,我只是声明这样的函数static
.但是在Perl中......这样做的常见方法是什么?
ps我认为我所指的Perlish术语是"类方法".
Eug*_*ash 18
在Perl中没有静态方法这样的东西.适用于整个类的方法通常称为类方法.这些仅通过其第一个参数的类型(它是包名称,而不是对象)与实例方法区分开来.与new()
大多数Perl类一样,构造方法是类方法的常见示例.
如果你想要一个特定的方法要调用一个类的方法只,做这样的事情:
sub class_method {
my ($class, @args) = @_;
die "class method invoked on object" if ref $class;
# your code
}
Run Code Online (Sandbox Code Playgroud)