4

次のように Moose で属性を宣言できます。

has 'attr' => (is => 'rw', isa => 'Int', default => 10);

この値をデフォルト値にリセットすることはできますか?

例:

$obj->attr(5); # sets attr to 5
$obj->_reset_attr;
print $obj->attr; # will print 10
4

1 に答える 1

6

これを行う場合:

has 'attr' => (
  is => 'rw',
  isa => 'Int',
  lazy => 1,
  default => 10,
  clearer => '_clear_attr',
);

次に、次のことができます。

my $obj = Class->new;
print $obj->attr; # 10
$obj->attr(5);
print $obj->attr; # 5
$obj->_clear_attr;
print $obj->attr; # 10

lazyここではとの組み合わせclearerが重要です。

于 2013-05-24T19:27:44.097 に答える