2012-05-14 11 views
1

Moosedocumentationは、簡単にオブジェクトthingに委譲できると言います。私はそれがこれを行うために取得するためにハンドルを構築しなければならないでしょうかMooseハンドルを使用してオブジェクトのサブオブジェクトに委譲するにはどうすればよいですか?

has 'thing' => (
    ... 
    handles => { set_foo => [ set => 'foo' ] }, 
); 

# $self->set_foo(...) calls $self->thing->set('foo', ...) 

しかし、私は本当に事上のオブジェクトに委譲したい、特にDateTimeオブジェクト

has 'thing' => (
    ... 
    handles => { 
     get_month => { datetime ... }, 
    }, 
); 

# $self->get_month calls $self->thing->datetime->month; 

thingdatetime_monthを追加するショート

答えて

3
has thing => (
    ... 
    handles => { 
     get_month => sub { $_[0]->thing->datetime->month }, 
    }, 
); 

、あなた自身の委任を記述する必要があります。

+1

この時点で、すでにメソッドを自分で作成しているので、 'handles'宣言を削除して' sub get_month'を手動で記述することもできます。 – rafl

+0

@rafl、あなたはそれを行うことができますが、私はそれを外に出したほうが良いとは反対します。具体的には、それを委譲者として書くことは、読者に情報を伝えます。 – ikegami

+0

私はこのレベルの深さを必要としなかった同じオブジェクト上に他のハンドルも持っています...それで、それらは同じ場所にすべてそれらを置きます。 – xenoterracide

関連する問題