#!/usr/bin/perl
package C;
use Moose;
sub XXX { 'XXX' };
package B;
use Moose;
has 'session' => (
is => 'ro',
isa => 'C',
default => sub { C->new },
handles => ['XXX']
);
package A;
use Moose;
has 'req' => (
is => 'ro',
isa => 'B',
default => sub { B->new },
handles => ['XXX']
);
package main;
my $a = A->new;
print '1 ' . $a->XXX . "\n";
print '2 ' . $a->req->session->XXX . "\n";
差不多就这个样子
On 2011/4/14 11:59, Beckheng Lam wrote:
> 可以,有个叫做delegate的概念能这样做。
>
> 我的目的是想简化一下代码而已。
>
> 于 2011年04月14日 11:00, cnhack TNT 写道:
>> Moose 正在学习中,不过,Moose 可以实现你所需要的这种功能么?
>>
>> 如果要多次调用 XXX(),直接:
>>
>> $session = $self->req()->session();
>> $session->XXX();
>>
>> 这样?
>>
>> 2011/4/14 Beckheng Lam <[email protected]
>> <mailto:[email protected]>>
>>
>> Hi,
>>
>> 例如我有个Class,带了一个req属性。可以使
>> 用$self->req()->session()->XXX() 的方法。
>> 如何在handler中写明,就可以直接$self->XXX()而无
>> 需$self->req()->session()->XXX()或 者$self->session()->XXX()这 样?
>>
>> 谢谢!
>>
>> --
>> 诸法从缘起,如来说是因。
>> 彼法因缘尽,是大沙门说。
>>
>> --
>>
>> --
>
> --
> 诸法从缘起,如来说是因。
> 彼法因缘尽,是大沙门说。
> --
> 您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”
> 论坛。
> 要向此网上论坛发帖,请发送电子邮件至 [email protected]。
> 要取消订阅此网上论坛,请发送电子邮件至
> [email protected]。
> 若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN
> 访问此网上论坛。
--
Fayland Lam // http://www.fayland.org/
--
您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 [email protected]。
要取消订阅此网上论坛,请发送电子邮件至 [email protected]。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。