Могу ли я сделать атрибут Moose «один раз написать»? - PullRequest
6 голосов
/ 12 ноября 2010

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

Если я использую is => 'ro', я должен установить атрибут при создании объекта, но я хочу иметь возможность добавить его впоследствии (если он еще не установлен).

Ответы [ 2 ]

12 голосов
/ 12 ноября 2010
5 голосов
/ 12 ноября 2010

Используйте модификатор метода:

has 'attr' => (
    is => 'rw',
    predicate => 'is_set',
    ...
};   

before 'attr' => sub {
     my $self = shift;
     die 'attr already set' if $self->is_set;
};
...