Mooseでdefaultをもう一度呼ばせる方法

package Foo;
use Moose;

has aaa => (
    is      => 'rw',
    lazy    => 1,
    default => sub { 100 },
);

no Moose;
__PACKAGE__->meta->make_immutable;
1;

package main;
use Perl6::Say;
use Foo;

my $foo = Foo->new;

say $foo->aaa; # 100

delete $foo->{aaa}; # delete!

say $foo->aaa; # 100

メンバ変数として使用されているハッシュのキーをdeleteで削除することでもう一度defaultを呼ばせることができる。$foo->aaa(undef)とかじゃダメ。

同じオブジェクトでdefaultを再び呼びたいケースなんてなんだか設計ミスってそうな気もしないこともないですが、覚えておくといいんじゃまいか。

ちなみに当然のことながらlazyしとかないと効果はない。