あなたが少し進歩したいのではなく、
has 'args' => (
is => 'rw',
isa => 'HashRef',
);
またはあなたが通常行うことは何でも、あなたは次のようなことをすることができます
has '_args' => (
is => 'ro',
isa => 'HashRef',
default => sub { +{} },
traits => ['Hash'],
handles => {
args => 'kv', # or args => 'shallow_clone'
set_arg => 'set',
get_arg => 'get',
clear_arg => 'delete',
},
);
現在、argsは引き続きhashrefとしてオブジェクトに格納されていますが、という名前のプライベート属性に格納されており、_args
他のメソッドを使用してアクセスします。たとえば、my %args = $event->args
(使用した場合kv
)またはmy $args = $event->args
(使用shallow_clone
した場合は、hashrefを取得します。ただし、これはまだコピーです)$event->set_arg("foo" => "bar"); my $value = $event->get_arg("foo")
など。これは厳密にオプションであり、理解できない場合はスキップする必要がありますが、より直交するインターフェイスを構築し、実装の詳細をユーザーから隠すのに役立ちます。