perl ネイティブ用の属性ハンドラーがダウンしていると思います!
package tree;
has '_branches' => (
traits => ['Hash'],
is => 'rw',
isa => 'HashRef[Any]',
handles => {
_set_branch => 'set',
_is_branch => 'defined',
_list_branches => 'keys',
_branch => 'get'
},
trigger => sub {
my($self,$hash) = @_;
$self->_build_branch($hash);
}
);
sub _build_branch{
my($self,$hash);
# do stuff!
#return altered or coerced hash
return $hash;
}
どう思いますか?
しかし、たとえば、次のメソッドを持つ LinkedList オブジェクトがあるとしましょう
LinkedList{}
LinkedList.append()
LinkedList.insert()
LinkedList.size()
LinkedList.has_children()
LinkedList.remove()
LinkedList.split()
Moose 属性を介して (MooseX を使用せずに) オブジェクトのメソッドを処理する方法はありますか? これに似ていますか?
package Bucket;
has '_linkedlist' => (
traits => ['LinkedList'],
is => 'rw',
isa => 'LinkedListRef[Any]',
handles => {
_add_link => 'append',
_insert_link => 'insert',
_count_links => 'size',
_del_link => 'remove',
_split_at_link => 'split',
_has_sublinks => 'has_children',
},
これを行う方法があれば素晴らしいのですが、非ネイティブ属性のハンドラーを作成する方法または理由について、どこかで誤解している可能性があるのではないかと心配しています。
考え?