如何在Moose中声明/使用静态成员?

时间:2011-03-02 14:57:58

标签: perl oop moose

我正在使用Moose对象,但我需要声明静态成员,以便只执行一次并且与对象无关。

你有什么想法或例子吗?

由于

多坦。

3 个答案:

答案 0 :(得分:6)

您可以使用MooseX::ClassAttribute

package SomeClass;
use Moose;
use MooseX::ClassAttribute;

class_has 'static_member' => ( is => 'rw' );

使用SomeClass->static_member访问该成员。

答案 1 :(得分:2)

我尝试使用MovX :: ClassAttribute作为bvr建议,但我最后只是将它们设置为只读成员,默认为:

has 'static_thing' => ( is => 'ro', init_arg => undef, default => 42 );

看起来更简单。

答案 2 :(得分:2)

在所有的cervine-ness下,仍有Plain Old Perl

所以只需在类.pm文件中设置一个变量

package SomeClass;
use Moose;

my $instance_counter = 0;

around BUILDARGS => sub {
    $instance_counter += 1;
}

. . .