Perl - 链接方法调用
Perl - chaining method calls
我有一个 class 并想严格按顺序链接它的方法调用,但不知道该怎么做。
# 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;
显然,folder
应该 return 一个有计数的 My::Mail::Folder
对象,没有 inbox
方法,inbox
应该 return 具有 count
方法但没有 folder
方法的 My::Mail::Box
对象。
另一方面,我不确定为什么 $mail->inbox->folder('Spam')->count;
有问题。
另一方面,您为什么对方法链感兴趣?
此外,请记住 Mail::
命名空间下有一大堆 CPAN 模块,包括 Mail::Box,这可能有助于您在长 运行 中保持理智在不太可能被您可能需要的 CPAN 模块践踏的命名空间中。
我有一个 class 并想严格按顺序链接它的方法调用,但不知道该怎么做。
# 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;
显然,folder
应该 return 一个有计数的 My::Mail::Folder
对象,没有 inbox
方法,inbox
应该 return 具有 count
方法但没有 folder
方法的 My::Mail::Box
对象。
另一方面,我不确定为什么 $mail->inbox->folder('Spam')->count;
有问题。
另一方面,您为什么对方法链感兴趣?
此外,请记住 Mail::
命名空间下有一大堆 CPAN 模块,包括 Mail::Box,这可能有助于您在长 运行 中保持理智在不太可能被您可能需要的 CPAN 模块践踏的命名空间中。