将属性重置为默认值

cap*_*fan 4 perl attributes moose

我可以像这样宣布与Moose的关系:

has 'attr' => (is => 'rw', isa => 'Int', default => 10);
Run Code Online (Sandbox Code Playgroud)

是否可以将此值重置为默认值?

例:

$obj->attr(5); # sets attr to 5
$obj->_reset_attr;
print $obj->attr; # will print 10
Run Code Online (Sandbox Code Playgroud)

hob*_*bbs 6

如果你这样做:

has 'attr' => (
  is => 'rw',
  isa => 'Int',
  lazy => 1,
  default => 10,
  clearer => '_clear_attr',
);
Run Code Online (Sandbox Code Playgroud)

然后你可以这样做:

my $obj = Class->new;
print $obj->attr; # 10
$obj->attr(5);
print $obj->attr; # 5
$obj->_clear_attr;
print $obj->attr; # 10
Run Code Online (Sandbox Code Playgroud)

的组合lazy,并clearer在这里很重要.