4 perl
我已经读了这段代码一段时间了,我无法弄明白.以下是做什么的?
sub shared { shift->state(broadcast => @_) }
Run Code Online (Sandbox Code Playgroud)
https://metacpan.org/source/GRAY/WebService-Google-Reader-0.21/lib/WebService/Google/Reader.pm#L72
fri*_*edo 13
在面向对象的Perl中,一个方法的调用者(在其上的方法被称为一点,无论是一个类或一个类的实例)被传入子程序作为第一个参数.
子程序的参数可在特殊数组中找到@_.shift删除数组的第一个元素并返回它.如果未指定显式参数shift,则@_默认情况下处理.
OO方法的通常模式是做类似的东西
# foo method
sub foo {
my $self = shift;
# do stuff to $self
$self->othermethod;
}
Run Code Online (Sandbox Code Playgroud)
这里发生的是他们只是使用快捷方式来避免创建变量$self,并state直接从返回的调用方调用方法shift.所以你的方法相当于:
sub shared {
my $self = shift;
$self->state( broadcast => @_ );
}
Run Code Online (Sandbox Code Playgroud)