perl – 带有移位运算符的()裸字有什么用?

前端之家收集整理的这篇文章主要介绍了perl – 带有移位运算符的()裸字有什么用?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在学习中间perl.现在我正在研究类的对象引用.它们给了一个包
{
    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";
        }
    }
}

in this I can’t understand the work of plus sign with shift
operator. In text they said,the plus sign is like bareword it would
be interpreted as a soft reference: @{“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;
}

猜你在找的Perl相关文章