Как я могу объявить / использовать статические члены в Moose? - PullRequest
5 голосов
/ 02 марта 2011

Я использую объекты Moose, но мне нужно объявить статические члены для вещей, которые будут выполнены только один раз и не связаны с объектами.

У вас есть идеи или примеры?

Спасибо

Dotan.

Ответы [ 3 ]

6 голосов
/ 02 марта 2011

Вы можете использовать MooseX :: ClassAttribute :

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

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

Для доступа к члену используется SomeClass->static_member.

2 голосов
/ 30 октября 2013

под всей шейкой матки все еще есть Plain Old Perl

, поэтому просто установите переменную в файле .pm файла

package SomeClass;
use Moose;

my $instance_counter = 0;

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

. . .
2 голосов
/ 02 марта 2011

Я попытался поиграться с MooseX :: ClassAttribute, как предложил bvr, но в итоге я просто установил их в качестве элементов только для чтения со значением по умолчанию:

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

Кажется, проще.

...