Perl - 链接方法调用

时间:2015-03-27 18:13:59

标签: perl methods method-chaining

我有一个类,并希望按严格的顺序链接其方法调用,但无法弄清楚如何操作。

# Mail.pm

package Mail;

sub new { ... }
sub inbox { ... }
sub folder { ... }
sub count { ... }

1;

以后......

use Mail;

my $mail = Mail->new;

# ok
$mail->inbox->count;
$mail->folder('Spam')->count;

# prevent calling inbox() after folder() or vice versa
$mail->inbox->folder('Spam')->count;
$mail->folder('Spam')->inbox->count;

1 个答案:

答案 0 :(得分:7)

显然,folder应该返回一个My::Mail::Folder对象,该对象有一个计数,没有inbox方法,而inbox应该返回一个My::Mail::Box对象, count方法,但没有folder方法。

另一方面,我不确定为什么$mail->inbox->folder('Spam')->count;会有问题。

另一方面,为什么你被方法链所吸引?

另外,请记住,在Mail::名称空间下有一大堆CPAN模块,包括Mail::Box,从长远来看,它可能有助于您理解命名空间。不太可能被您可能需要的CPAN模块踩踏。