我是一个非常好的初学者,但我(或多或少)有这段代码:
span
使用以下方法调用该方法:package Base;
sub foo{
my ($self, $first, $second, $third) = @_;
# do some magic here!
}
package Subclass;
use base qw(Base);
sub foo{
my ($self, $first, $second, $third) = @_;
#do something with $first only
return $self->SUPER::foo($first, $second, $third);
}
是否有一种更简洁的方式来调用$self->foo("Hey", "what's", "up");
,而无需再次重复所有参数列表?
答案 0 :(得分:5)
你可以重复使用@_
来传递像这样的参数
$self->SUPER::foo(@_);
由于@_
的第一个元素是"对象"用于调用类方法,您不希望将其传递给父类方法两次,因此您应该先使用shift
将其删除。
sub foo{
my $self=shift;
my ($first, $second, $third) = @_;
#do something with $first only
return $self->SUPER::foo(@_);
}
答案 1 :(得分:0)
这实际上可能是&function;
电话的有效用途之一。
E.g。
&SUPER::foo;
正如perlsub中所述 - 这使@_
对被调查者可见。
它应该谨慎使用,因为它偏离了你通常预期会发生的事情 - 它不会传递args,它会使相同的设置可见'可见'可见'可见'可见'可见' 39 ;.