我可以将Moose属性"写一次"吗?

Dav*_*d B 6 perl moose

我想有一个非必需的Moose属性,只能设置一次.

如果我使用is => 'ro'我必须在创建对象时设置属性,但我希望能够在之后添加它(只要它尚未设置).

Ped*_*lva 5

使用方法修饰符:

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

before 'attr' => sub {
     my $self = shift;
     die 'attr already set' if $self->is_set;
};
Run Code Online (Sandbox Code Playgroud)

  • 异戊二烯:这取决于.有*有正当理由使用`die`. (2认同)