我正在学习中间perl.现在我正在研究class的对象引用.在那里他们给了一个包
{
package Barn;
sub new { bless [], shift }
sub add { push @{ +shift }, shift }
sub contents { @{ +shift } }
sub DESTROY {
my $self = shift;
print "$self is being destroyed...\n";
for ( $self->contents ) {
print ' ', $_->name, " goes homeless.\n";
}
}
}
Run Code Online (Sandbox Code Playgroud)
在这个我无法理解带加号运算符的加号工作.在文中他们说,加号就像是赤字,它将被解释为软参考:@ {"shift"}
你能清楚地解释一下使用带加号算子的加号的工作吗?
Bor*_*din 15
没有加号,@{shift}与@shift完全不调用shift运算符的数组相同.添加shift要作为表达式计算的加号力,因此shift调用运算符
我更愿意看到 @{ shift() }
通常编写方法,以便它们$self像这样提取第一个参数
sub new {
my $class = shift;
bless [ ], $class;
}
sub add {
my $self = shift;
push @$self, shift;
}
sub contents {
my $self = shift;
return @$self;
}
Run Code Online (Sandbox Code Playgroud)